Autor Beitrag
Nilius
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Mo 23.05.11 12:46 
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:


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mo 23.05.11 12:54 
>> das Problem liegt hier: 0 to (Length(Daten))

ausblenden Delphi-Quelltext
1:
2:
3:
.. 0 to (Length(Daten) - 1) ..
//besser
For i := Low(Daten) to High(Daten) do

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS

Für diesen Beitrag haben gedankt: Nilius
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 23.05.11 12:54 
Die Indizes in einem Array gehen von 0 bis Length - 1. ;-)

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: Nilius
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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:
user profile iconNilius hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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 // 0..Max-1
    WriteLn(f, daten[i]);
  CloseFile(f);
end;

user profile iconNilius hat folgendes geschrieben Zum zitierten Posting springen:
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... :(

_________________
There are 10 types of people - those who understand binary and those who don´t.

Für diesen Beitrag haben gedankt: Nilius
HeftCD
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 91
Erhaltene Danke: 9

Win2k, WinXP, Win7, Win8
Delphi 3 Pro, Delphi 5, Delphi 7, Turbo Delphi, BC1
BeitragVerfasst: Mo 23.05.11 13:04 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
//EDIT: Mudda, bin ich langsam... :(
Du wirst älter :)

Moderiert von user profile iconNarses: Zitat repariert.

_________________
prog.pr.ohost.de/ - Inno-Gui Designer (Programm)
PGP Key ID: 0x30DE7A08 - Fingerprint:9CD3 323C 3AE8 5714 EB8B FD07 9F65 986F 30DE 7A08
Nilius Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mo 23.05.11 18:09 
Ein bisschen deklarativer:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var
  S: string;
begin
  for S in Daten do
    ...