Entwickler-Ecke
Dateizugriff - Array of String in .txt abspeichern
Nilius - Mo 23.05.11 12:46
Titel: Array of String in .txt abspeichern
Hallo, habe eben in der Suche gesucht, aber da findet man immer nur verweise wie man es denn bitte auf eine andere Art machen soll. Ich hab jetzt einen Array of String und möchte diesen einfach über writeln in ne txt speichern. Mein problem is nur dass er mior jedesmal sagt dass es probleme mit zugriffsverletzungen gibt und ich grad net mehr rausfinde warum. wäre nett wenn man mir meinen fehler aufzeigen könnte :)
Hier der quelltext der entsprechenden Prozedur:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button2Click(Sender: TObject); var i:integer; f:textfile; begin begin Assignfile(f, 'C:\Datenbank.txt'); ReWrite(f); for i:=0 to (Length(Daten)) do WriteLn(f, daten[i]); CloseFile(f); end; close; end; |
Daten ist hierbei der Global definierte Array of String (dynamisch)
Interessanterweise funktioniert eigentlich alles, d.h. die textdatei wird erstellt und die daten werden auch reingeschrieben. nur gibt er jedesmal ne fehlermeldung aus: "Zugriffsverletzung bei Adresse 00404A07 in Modul "Project1.exe". Lesen von Adresse 0000004A."
bummi - Mo 23.05.11 12:54
>> das Problem liegt hier: 0 to (Length(Daten))
Delphi-Quelltext
1: 2: 3:
| .. 0 to (Length(Daten) - 1) .. For i := Low(Daten) to High(Daten) do |
Gausi - Mo 23.05.11 12:54
Die Indizes in einem Array gehen von 0 bis Length - 1. ;-)
Narses - Mo 23.05.11 12:57
Moin und :welcome: im Forum!
Ein dynamisches Array der Länge N fängt bei 0 an und geht bis N-1. :idea: Du hast aber auch noch den Index N verwendet - und den gibt´s nicht, deshalb die Exception. ;) Probier das mal so:
Nilius hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button2Click(Sender: TObject); var i: Integer; f: Textfile; begin Assignfile(f, 'C:\Datenbank.txt'); ReWrite(f); for i := 0 to High(Daten) do WriteLn(f, daten[i]); CloseFile(f); end; | |
Nilius hat folgendes geschrieben : |
habe eben in der Suche gesucht, aber da findet man immer nur verweise wie man es denn bitte auf eine andere Art machen soll. |
Nicht ohne Grund, sowas kann man sehr viel besser mit einer TStringList erledigen. Die hat auch gleich eine passende Methode zu Speichern und Laden dabei. :think:
cu
Narses
//EDIT: Mudda, bin ich langsam... :(
HeftCD - Mo 23.05.11 13:04
Narses hat folgendes geschrieben : |
//EDIT: Mudda, bin ich langsam... :( |
Du wirst älter :)
Moderiert von
Narses: Zitat repariert.
Nilius - Mo 23.05.11 13:41
Danke an alle Antworten^^ Jetzt funzt es endlich. Und zum Thema dass kann man besser lösen: Ich find genau diese Variante sehr schön, weil man eben nicht noch wieder neue Sachen dazudefiniern muss und ich außerdem hiermit am besten klar komme und es am übersichtlichsten finde. Und bei den Programmgrößen die Otto-Normal hier bastelt, merkt der moderne Rechner eh kein Unterschied mehr ob das jetzt etwas effektiver ist oder nicht ;)
delfiphan - Mo 23.05.11 18:09
Ein bisschen deklarativer:
Delphi-Quelltext
1: 2: 3: 4: 5:
| var S: string; begin for S in Daten do ... |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!