Ich habe hier gerade einen ziemlich seltsamen Fehler, aus dem ich nicht schlau werde:
TDate = class
private
fComment: TStringList ;
…
public
property Comment:TStringList read fComment ;
…
end ;
TFrmNotes = class (TForm)
MmoNotes: TMemo;
private
fDate: TDate ;
procedure SetDate(D:TDate) ;
public
property Date:TDate read fDate write SetDate ;
end ;
procedure TFrmNotes.SetDate(D:TDate) ;
var
i: Integer ;
begin
fDate:=D ;
if Assigned(fDate) then begin
MmoNotes.Lines.Clear ;
for i:=0 to fDate.Comment.Count-1 do
MmoNotes.Lines.Add(fDate.Comment[i]) ;
end ;
end ;
Die entscheidende Zeile habe unterstrichen. Vor der ersten Ausführung dieses Befehls steht in den überwachten Ausdrücken
fDate.Comment.count: 2
MmoNotes.Lines.Count: 0
i: 0
fDate.Comment[0]: ‚abc‘
fDate.Comment[1]: ‚xyz‘
Danach steht dort
fDate.Comment.count: 1
MmoNotes.Lines.Count: 1
i: 0
fDate.Comment[0]: ‚abc‘
fDate.Comment[1]: Delphi Exception EStringListError bei $4C3FCD9
Das Ganze führt beim nächsten Schleifendurchlauf natürlich zu einem Fehler (Der Index der Liste überschreitet das Maximum(1)), der übrigens auch auftritt, wenn ich die Stringlisten nicht zeilenweise, sondern mit Assign kopiere.
Woran liegt das und (vor allem) wie kann ich das Problem lösen?