Einzelnen Beitrag anzeigen

TheBluescreen

Registriert seit: 7. Okt 2003
22 Beiträge
 
Delphi 7 Enterprise
 
#1

Probleme mit dem Laden/ Speichern von Arrays

  Alt 22. Mär 2004, 21:16
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
  Mit Zitat antworten Zitat