Einzelnen Beitrag anzeigen

TheBluescreen

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

Probleme beim Speichern/ Einlesen von 2 dynamischen Arrays

  Alt 22. Mär 2004, 20:22
Hi!

Ich bins nochmal (zum 3. Mal weil der Internetexplorer 3mal abge**** ist und ich alles nochmal tippen muss ). Ich habe ein Problem beim Speichern und auslesen 2er dynamischen Arrays in einer Datei. Es erscheint folgende Fehlermeldung: "Project1 Project1.exe raised exception class EStringListError with message 'List index out of bounds(9)'....". Ich hoffe mir kann geholfen werden.

MfG und vielen Dank im Vorraus!

Bluescreen

Hier der Quellcode.. ich hoffe ihr könnt etwas damit anfangen.. ansonsten schreib ich noch ein paar Erklärungen rein

Delphi-Quellcode:
  TWord1 = array of string;
  TWord2 = array of string;
//*************************
var
  Vocab1: TWord1;
  Vocab2: TWord2;
  i: integer; //i= Länge der dyn. Arrays
//**************************
procedure TForm1.B_SaveClick(Sender: TObject);
var StrList: TStrings;
    y: integer;
begin
  if SaveDialog1.Execute then begin
    StrList := NIL;
    try
      StrList := TStringList.Create;
      StrList.Add(inttostr(i));
      for y:=1 to i-1 do begin
        StrList.Add(vocab1[y]);
      end;
      for y:=1 to i-1 do begin
        StrList.Add(vocab2[y]);
      end;
      StrList.SaveToFile(SaveDialog1.FileName);
    finally
      StrList.Free;
    end;
  end;
end;

procedure TForm1.B_loadClick(Sender: TObject);
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]);
      SetLength(Vocab1,i);
      SetLength(Vocab2,i);
      for y:=1 to i do begin
        vocab1[y] := StrList[y];
      end;
      for y:=i+1 to 2*i do begin
        vocab2[y+i] := StrList[2*i-1];
      end;
    finally
      StrList.Free;
    end;
  end;

end;
Eine gespeicherte Datei sieht so aus:
Code:
5
12
123
1234
12345
12
123
1234
12345
  Mit Zitat antworten Zitat