1. es macht sich besser, wenn die Schreib- und Lese-Prozeduren möglichst gleich aufgebaut sind.
2. Array's und insbesonders dynamische Array's beginnen mit der Zählung bei
0.
3. Dort wo eine Zählervariable benötigt wird, sollte auch eine vorhanden sein.
Code:
for y:=i+1 to 2*i do begin
vocab2[y+i] := StrList[color=red][2*i-1][/color]; // wo ist [color=red][b]Y[/b][/color]
...
Das Ergebnis sollte in etwa so aussehn (die größten Änderungen sind hervogehoben):
Code:
procedure TForm1.B_SaveClick(Sender: TObject);
...
StrList := TStringList.Create;
StrList.Add(inttostr(i));
for y:= [color=red]0[/color] to i-1 do begin
StrList.Add(vocab1[y]);
end;
for y:=[color=red]i[/color] to [color=red]2*i-1 [/color]do begin
StrList.Add(vocab2[y[color=red]-i[/color]]);
end;
StrList.SaveToFile(SaveDialog1.FileName);
procedure TForm1.B_loadClick(Sender: TObject);
...
StrList := TStringList.Create;
StrList.LoadFromFile(OpenDialog1.FileName);
i:=StrToInt(StrList[[color=red]0[/color]]);
SetLength(Vocab1,i);
SetLength(Vocab2,i);
for y:=[color=red]0[/color] to i[color=red]-1[/color] do begin
vocab1[y] := StrList[y[color=red]+1[/color]];
end;
for y:=[color=red]i[/color] to 2*i[color=red]-1[/color] do begin
vocab2[[color=red]y-i[/color]] := StrList[[color=red]y+1[/color]];
end;