ich habe eine reine (OOP Anfänger-) Verständnisfrage:
Bei der Umstellung der Records auf Klassen habe ich auch entsprechende Properties für die Felder mit read write gesetzt.
In meinem ursprünglichen Code hatte ich Funktionen/Prozeduren geschrieben um Feldinhalte zu validieren. Z.B. Ob der Feldinhalt eine bestimmte Länge hat oder eine Zahl oder ein Text ist oder ob das Feld leer ist etc...
Was wäre eigentlich der korrekte Weg die Validierung im OOP Kontext umzusetzen?
z.Zt.:
Code: Alles auswählen
type
TSatz : Class(TObject)
private
FFeld1 : String;
FFeld2 : String;
...
public
property Feld1 : String read FFeld1 write FFeld1;
property Feld2 : String read FFeld2 write FFeld2;
...
end;
function isValidFeld1(AFeld : String) : Boolean;
begin
// Validierung für Feld1
end;
function isValidFeld2(AFeld : String) : Boolean;
begin
// Validierung für Feld2
end;
wäre das hier der richtige Weg?
type
TSatz : Class(TObject)
private
FFeld1 : String;
FFeld2 : String;
...
function isValid(AFeld : String); override;
protected
function SetFeld1(AFeld1 : String);
function SetFedl2(AFeld2 : String);
public
property Feld1 : String read FFeld1 write SetFeld1;
property Feld2 : String read FFeld2 write SetFeld2;
...
end;
function TSatz.isValid(AFeld1 : String) : Boolean;
begin
// Validierung für Feld1 auf Text
end;
function TSatz.isValid(AFeld2 : String) : Boolean;
begin
// Validierung für Feld2 auf Zahl im Text
end;
function TSatz.isValid(AFeld2 : String) : Boolean;
begin
// Validierung für Feld2
end;
function TSatz.SetFeld1(AFeld1 : String) : String;
begin
if isValid(AFeld1) then
Result := AString
else
begin
InLogSchreiben('Fehler in Feld 1');
Result :='';
end;
end
function TSatz.SetFeld2(AFeld2 : String) : String;
begin
if isValid(AFeld2) then //Zahl im String
Result := AString
else
begin
InLogSchreiben('Fehler in Feld 2');
Result :='0';
end;
end
oder sollten diese Prüfungen außerhalb der Klasse stehen?
Gruß