AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Probleme mit dem Laden/ Speichern von Arrays
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit dem Laden/ Speichern von Arrays

Ein Thema von TheBluescreen · begonnen am 22. Mär 2004 · letzter Beitrag vom 25. Mär 2004
Antwort Antwort
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
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Probleme mit dem Laden/ Speichern von Arrays

  Alt 22. Mär 2004, 21:32
Hi,

tritt der Fehler in dieser Zeile auf?
vocab2[y+i] := StrList[2*i-1]; Warum nimmst du denn einmal TStringlist und woanders Array of String? Wärs nicht einfacher nur mit TStringlist zu arbeiten?

Gruß,
Dani
Dani H.
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#3

Re: Probleme mit dem Laden/ Speichern von Arrays

  Alt 24. Mär 2004, 21:45
Hi,
Mal zu deiner LadeRoutine:
Zitat von TheBluescreen:
      i:=StrToInt(StrList[1]); //Länge der dyn. Arrays ablesen
Mit StrList.Count bekommst du die Anzahl der Listenelemente.
Du Elementanzahl würd ich gar nicht mitspeichern.

Zitat von TheBluescreen:
Delphi-Quellcode:
      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;
Dynamische Arrays und Stringlisten fangen immer bei Null an.
Die Schleife müsste also richtig von 0 bis i - 1 gehen.

Delphi-Quellcode:
      for y:=0 to i - 1 do begin
        vocab1[y] := StrList[y + 1]; end;

Wobei du die Elementanzahl nicht in eine Variable namens i schreiben solltest. i ist immer eine Schleifenvariable.

Zitat von TheBluescreen:
Delphi-Quellcode:
      for y:=i+1 to 2*i do begin
        vocab2[y+i] := StrList[2*i-1];
      end;
Hier soltle die Schleife wieder von 0 bis i - 1 laufen. Hier greifst du übrigens immer auf das selbe Element der Stringliste zu.
Delphi-Quellcode:
      for y := 0 to i - 1 do begin
        vocab2[y] := StrList[i + y];
      end;
grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
TheBluescreen

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

Re: Probleme mit dem Laden/ Speichern von Arrays

  Alt 25. Mär 2004, 18:30
oha... tut mir leid.. aber das problem ist schon in einem anderen Thread gelöst worden (http://www.delphipraxis.net/internal...ct.php?t=21397). Durch einen Fehler vom Internetexplorer scheint der Beitrag irgendwie doch gesendet worden sein...

Trotzdem vielen dank an Dani und Sanchez für's Kopfzerbrechen....
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz