ich habe hier ein Problem. Ich habe die "Lösungen'' schon aus einem Forum genommen, jedoch habe ich es bisher nicht geschaft, den Quelltext so umzuschreiben, dass es bei mir 1. ohne Errors läuft geschwieige denn, das überhaupt etwas Funktioniert.
Folgender Quelltext:
Code: Alles auswählen
type //Habe überlegt wegen Fehler bei der ganzzahligen Division mit einer Config Datei zu arbeiten, damit ich die länge des Arrays/ Records schon kenne beim Laden
TConfig = record
Leange:integer;
end;
type
Config = array of TConfig ; //Hier war meine überlegung einfach um nen Array zu speichern... das geht aber eig auch mit ner einfachen Textdatei (denke ich)
type
TRecord = record //Das hier ist dass Hauptrecord , wellches in nem Array verwendet wird
Name: string;
Nummer: integer;
end;
var
Form1: TForm1;
TArrayRec : Array of TRecord;
TestArray : Array of TRecord;
type
TDatei = class
procedure SaveArray(const Pfad :string; const TArrayData : array of TRecord);
procedure SaveConf(const Pfad :string; const RecordData: TConfig);
procedure LoadArray(const AFilename: string; var TArrayData: TRecord);
procedure LoadConf(const AFilename: string; var RecordData: Config);
end;
var
Datei: TDatei;
implementation
{$R *.lfm}
{ TForm1 }
{--------------------------Save Config------------------------------------}
procedure TDatei.SaveConf(const Pfad :string; const RecordData: TConfig);
var FStream: TFileStream;
i : integer;
begin
FStream := TFilestream.Create(Pfad, fmCreate); //öffnet den Stream, falls Pfad nicht vorhanden, wird er erzeugt
try
FStream.Write(RecordData.Leange, 5);
finally
FStream.Free;
end;
end;
{--------------------------Save Array-------------------------------------}
procedure TDatei.SaveArray(const Pfad :string; const TArrayData : array of TRecord);
var FStream: TFileStream;
i : integer;
leange: integer;
begin
FStream := TFilestream.Create(Pfad, fmCreate); //öffnet den Stream, falls Pfad nicht vorhanden, wird er erzeugt
try
for i := 0 to 3-1 do //Jedes einzelne Element per Stream in Datei Verfrachten
FStream.Write(TArrayData[i], SizeOf(TArrayData[i]));
finally
FStream.Free;
end;
end;
{--------------------------Lade Config-------------------------------------}
procedure TDatei.LoadConf(const AFilename: string; var RecordData: Config); //Das is eher unwichtig, wie oben schon beschrieben
var
FStream: TFilestream;
i: Integer;
begin
FStream := TFilestream.Create(AFilename, fmOpenRead); //Öffnet des Stream um Datei zu lesen
try
SetLength(RecordData, 1); //Stellt den Array auf die Datenmenge ein
FStream.Read(RecordData[0].Leange, SizeOf(RecordData[Config[0].Leange-1])); //Einlesen der Datei
finally
FStream.free;
end;
end;
{------------------------------Lade Array------------------------------------}
procedure TDatei.LoadArray(const AFilename: string; var TArrayData: TRecord); // Das hier ist das Laden, welches nicht funktioniert
var
FStream: TFilestream;
i: Integer;
begin
FStream := TFilestream.Create(AFilename, fmOpenRead); //Öffnet des Stream um Datei zu lesen
SetLength(TArrayData, 3); //Stellt den Array auf die Datenmenge ein
try
for i:= 0 to Length(TArrayData) do
FStream.Read(TArrayData[i], SizeOf(TArrayData[i])); //Einlesen der Datei
finally
FStream.free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject); //Hier soll dann gespeichert werden
begin
Datei.SaveConf('H:\Inf\Conf.dat', Config[0]);
Datei.SaveArray('H:\Inf\Test.dat', TArrayRec);
end;
procedure TForm1.Button2Click(Sender: TObject); //und hier geladen
var i:integer ;
begin
Datei.LoadConf('H:\Inf\Conf.dat',Conf2);
Datei.LoadArray('H:\Inf\Test.dat',TestArray);
for i:=0 to Length(TestArray) do
begin
ListBox1.Items.Add(TestArray[i].Name); //Und in ne Listbox eingetragen werden
end;
end;
procedure TForm1.FormCreate(Sender: TObject); //Beispielwerte
begin
SetLength(TArrayRec, 3);
TArrayRec[0].Name:='Hans';
TArrayRec[0].Nummer:=1;
TArrayRec[1].Name:='Peter';
TArrayRec[1].Nummer:=2;
TArrayRec[2].Name:='Tom';
TArrayRec[2].Nummer:=3;
Config.Leange:=Length(TArrayRec);
Ich weiß, das es wahrscheinlich ziemlich unordentlich ist, da ich erstmal versucht habe selber des Problem (so halberfolgreich) zu lösen.
Und ich bin auf dem Gebiet der Speicherung ziemlich neu ^^
Also Entschuldigung für das Chaos und danke im Vorraus!