Hi!
Ich bins nochmal... Ich habe ein Problem beim Speichern und Auslesen von 2 dynamischen Arrays(beide sollen in eine Datei gespeichert werden). Beim Laden einer Datei kommt die Fehlermeldung "Project Project1.exe raised
exception class EStringListError with message 'List index out of bounds(9)'. Process stopped....." . Was mache ich falsch? Ich hoffe mir kann geholfen werden...
Schonmal vielen Dank im Vorraus!
Bluescreen
Hier der Quellcode:
Delphi-Quellcode:
type
TWord1 = array of string;
TWord2 = array of string;
//-------------
var
Vocab1: TWord1;
Vocab2: TWord2;
i: integer; //Gibt die Länge der dynamischen Arrays an
//-------------
procedure TForm1.B_SaveClick(Sender: TObject); //Speichern
var StrList: TStrings;
y: integer;
begin
if SaveDialog1.Execute then begin
StrList := NIL;
try
StrList := TStringList.Create;
StrList.Add(inttostr(i)); //Es wird die Länge der Arrays gespeichert
for y:=1 to i-1 do begin
StrList.Add(vocab1[y]); //Array1 wird gespeichert
end;
for y:=1 to i-1 do begin
StrList.Add(vocab2[y]); //Array2 wird gespeichert
end;
StrList.SaveToFile(SaveDialog1.FileName);
finally
StrList.Free;
end;
end;
end;
procedure TForm1.B_loadClick(Sender: TObject); //Laden
var StrList: TStrings;
y: integer;
begin
if OpenDialog1.Execute then begin
StrList := NIL;
try
StrList := TStringList.Create;
StrList.LoadFromFile(OpenDialog1.FileName);
i:=StrToInt(StrList[1]); //Länge der dyn. Arrays ablesen
SetLength(Vocab1,i); //Setzen der Länge
SetLength(Vocab2,i);
for y:=1 to i do begin
vocab1[y] := StrList[y]; //hier weiss ich nich so genau wie ich das lösen soll *g
end;
for y:=i+1 to 2*i do begin
vocab2[y+i] := StrList[2*i-1];
end;
finally
StrList.Free;
end;
end;
end;
Das Ergebnis in der Textdatei wäre z.B.
Code:
5 //Länge der Arrays
12
123
1234
12345
12
123
1234
12345