Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Speichern funktioniert nicht! (https://www.delphipraxis.net/54267-speichern-funktioniert-nicht.html)

Chuqa 30. Sep 2005 23:17


Speichern funktioniert nicht!
 
Hi,

ich möchte Datem aus einem Array speichern. Das Array hat als Datentyp einen Selbstdeklarierten.
Nun habe ich speicher ich wie folgt:

Delphi-Quellcode:
procedure Speichern();
var  name:String;
      datei:textfile;
      x: integer
begin
      if Form1.SaveDialog1.Execute then
      begin
        name:=Form1.SaveDialog1.FileName;
        try
            AssignFile(datei,name);
            rewrite(datei);
            for x:=0 to 200 do          //alle Array-elemente
            begin
                writeln(datei,Array[x].Name+'$'+Array[x].Vorname+'$'+
                            Array[x].Geb+'$'+Array[x].Strasse+'$'); //sämtliche Variablen spichern
            end;
            closefile(datei);
            messagedlg('Erfolgreich gespeichert !',mtinformation,[mbok],0);
        except
        messagedlg('Fehler beim speichern!',mtinformation,[mbok],0);
        exit;
        end;
      end;
end;
Das $-Zeichen benutze ich später als Trennung der einzelnen Variablen, damit ich die Datei wieder auslesen kann. Nun stürzt das Programm allerdings beim speichern ab, mit der Fehlermeldung, dass eine Execption der Klasse "EAccessViolation" aufgetreten sei, dann noch Zugriffsverletzungen bei Speicheradressen. Wenn ich nur ein Element speicher, bringt er keine Fehlermeldung. Ich habe es auch mit 2 und 3 Elementen + $-Zeichen probiert, ging bei manchen auch, aber es geht nicht mit allen, das ist sehr sonderbar. Weiß jemand was ich falsch mache?

neolithos 30. Sep 2005 23:53

Re: Speichern funktioniert nicht!
 
Höchstwahrscheinlich greifst du auf ein Element zu was überhaupt nicht exisiert!

Wie hast du Array deklariert? Und wieso hat diese Variable keinen vernüpftigen, aussagekräftigen Namen?

Chuqa 1. Okt 2005 09:39

Re: Speichern funktioniert nicht!
 
Zitat:

Zitat von neolithos
Höchstwahrscheinlich greifst du auf ein Element zu was überhaupt nicht exisiert!

Wenn das so wäre, würde Delphi doch einen Syntaxfehler melden.
Zitat:

Zitat von neolithos
Wie hast du Array deklariert? Und wieso hat diese Variable keinen vernüpftigen, aussagekräftigen Namen?

Das Array hat einen aussagekräftigen Namen. Das soll nur lediglich eine Beispiel darstellen, wie ich den Code geschrieben habe. Es sind im original noch diverse Prüfungen vorhanden, die aber für mein Problem nicht von Bedeutung sind. Das Programm bricht halt an der Stelle writeln(datei,...) mit der obengenannten Fehlermeldung ab.

Khabarakh 1. Okt 2005 09:45

Re: Speichern funktioniert nicht!
 
Zitat:

Zitat von Chuqa
Zitat:

Zitat von neolithos
Höchstwahrscheinlich greifst du auf ein Element zu was überhaupt nicht exisiert!

Wenn das so wäre, würde Delphi doch einen Syntaxfehler melden.

Wie soll Delphi denn zur Kompilierzeit wissen, welche Indizes du benutzt :gruebel: ? Hast du die Bereichsprüfung eingeschaltet? Hast du beim Debuggen den Inhalt des Arrays geprüft?

SirThornberry 1. Okt 2005 09:46

Re: Speichern funktioniert nicht!
 
beim wievielten Schleifendurchlauf passiert das, schon beim ersten?

Chuqa 1. Okt 2005 10:00

Re: Speichern funktioniert nicht!
 
@Khabarakh

Also eigentlich hab ich ne Bereichsprüfung da drin, aba da schau ich auch noch ma nach, weil da sowieso etwas noch nicht passt.

@SirThornberry

Ja wenn es passiert, dann gleich beim ersten Schleifendurchlauf.

Chuqa 2. Okt 2005 13:28

Re: Speichern funktioniert nicht!
 
Ok war ein richtig dummer Fehler. Habe erst jetzte wieder mit Delphi gearbeitet und vorher mit Java und C++. Das Problem dabei ist, dass die Array bei Java usw. bei 0 beginnen, und bei Delphi habe ich es bei 1 beginnen lassen. Die Prüfung habe ich natürlich wie von Java gewohnt bei 0 beginnen lassen, deswegen kam es zur Zugriffsverletzung. Also schon dumm ;). Ich danke euch allen, die sich die Mühe gemacht mir zu helfen.

mfg Chuqa


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 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