Setz dich am besten mal mit
TFileStream auseinander.
Hmm oder ich schick dir mal ne Klasse die ich mir abgeleitet hab und direkt typisiert u.a. auch Strings schreiben und lesen kann.
Dann müsstest du ihm beim Laden nur noch folgenden Code (untested) schreiben:
Delphi-Quellcode:
type TEintrag = record
Name: string;
Preis: integer;
end;
var Eintraege = array of TEintrag;
procedure Load(FileName: TFilename);
var i: Integer;
Count: cardinal;
F: TAdvFileStream; // Das ist meine Klasse...such ich dir noch raus und schick dir das
begin
F := TAdvFileStream.Create(Filename, fmOpenRead);
try
Count := F.ReadCardinal; // Auslesen wieviele drin sind
SetLength(Eintraege, Count); // Länge des Arrays setzen
for i := 0 to (Count - 1) do
with Eintraege[i] do begin // Und dann alle nacheinander auslesen
Name := ReadStr;
Preis := ReadInt;
end;
finally
F.Free;
end;
end;
// Beim Speichern alles einfach in der gleichen Reihenfolge wieder reinschreiben;
procedure Speichern(Filename: TFilename);
var i: integer;
F: TAdvFileStream;
begin
F := TAdvFileStream.Create(Filename, fmCreate);
try
F.WriteCardinal(length(Eintraege)); // Hier auch: erst abspeichern wie viele Einträge jetzt kommen
for i := 0 to length(Eintraege) - 1 do
with Eintraege[i] do begin // Dann nacheinander alle reinschreiben
F.WriteStr(Name);
F.WriteInt(Preis);
end;
finally
F.Free;
end;
end;
Nur mal so als grobe Übersicht.
@all:
Ich weiß, dass ihr mich jetzt gleich zerreißen werdet, weil's kein
OOP ist und noch dazu globale Variablen verwendet.
Ist aber ja auch nur ein Beispiel.
PS: Benutz doch bitte in Zukunft für Quellcode die Delphi-Tags! Das kann ja kein Mensch lesen so.
//edit
So hier auch die
Unit