Hi,
Also erst mal meine Records:
Delphi-Quellcode:
rZinsen = packed record
Start : TDateTime;
Intervall: Zinsintervall;
Kind : Zinsart;
Value : Word;
end;
rSchulden = packed record
Bei : String;
Anlass : String;
Betrag : Single;
Zinsen : rZinsen;
Gezahlt: Boolean;
end;
dann hab ich ne Klasse die die Schulden verwaltet:
Delphi-Quellcode:
TSchuldenliste = class
private
FStringgrid: TStringgrid;
FItems: Array of rSchulden;
FCount: Word;
function GetItem(Index: Integer): rSchulden;
procedure SetItem(Index: Integer; const Value: rSchulden);
public
constructor Create(Stringgrid: TStringgrid);
procedure Add(Schulden: rSchulden);
property Items[Index: Integer]: rSchulden read GetItem write SetItem;
property Count: Word read FCount write FCount;
procedure SaveToFile(Filename: String);
procedure LoadFromFile(Filename: String);
end;
und beim Laden von den Records gibts jetzt irgendwie beim zweiten Record einen Fehler.. das erste wird fehlerlos geladen (was heißt das es eigentlich nicht am speichern liegen kann.. weshalb ich die Speichern Procedure jetzt aus Platzgründen erst mal nicht poste).
Delphi-Quellcode:
procedure TSchuldenliste.LoadFromFile(Filename: String);
var MS: TMemoryStream;
i, len: Integer;
begin
MS := TMemoryStream.Create;
Ms.LoadFromFile(Filename);
Ms.Position := 0;
Ms.Read(FCount, SizeOf(Word));
SetLength(FItems,FCount);
for i:= 0 to FCount-1 do begin
Ms.Read(Len, SizeOf(Integer));
SetLength(FItems[i].Bei,len);
Ms.Read(FItems[i].Bei[1], len);
Ms.Read(Len, SizeOf(Integer));
SetLength(FItems[i].Anlass,len);
Ms.Read(FItems[i].Anlass[1], len);
Ms.Read(FItems[i].Betrag, SizeOf(Single));
Ms.Read(FItems[i].Zinsen.Start, SizeOf(Double));
Ms.Read(FItems[i].Zinsen.Intervall, SizeOf(Zinsintervall));
Ms.Read(FItems[i].Zinsen.Kind, SizeOf(Zinsart));
Ms.Read(FItems[i].Zinsen.Value, SizeOf(Integer));
Ms.Read(FItems[i].Gezahlt, SizeOf(Boolean));
end;
Ms.Free; // Mit try-except etc hab ichs nicht so :D
end;
Wo liegt das Problem ?
Das Array FItems ist auch groß genug nach SetLength.. Aber was läuft denn da falsch ?
PS: Ach ja der Debugger bleibt bei beim zweiten mal beim ersten SetLength stehn...
Gruß
Neutral General