Entwickler-Ecke
Dateizugriff - Problem mit schreiben von Textdatei
P@u1 - Fr 22.01.10 21:23
Titel: Problem mit schreiben von Textdatei
Hallo,
ich habe ein Delphi-Programm geschrieben, was unter anderem etwas in eine Datei schreibt.
Leider gibt es ein Problem: Fast alles wird geschrieben, aber die letzten paar Zeilen kommen einfach nicht.
Hier der Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure TfrmMain.Button3Click(Sender: TObject); var Datei : Textfile; i: Integer; begin AssignFile(Datei,Path+'\config.txt'); Rewrite(Datei);
for i := 1 to 16 do begin if i<10 then begin writeln(Datei,'//'+RadioGroup1.Items[i-1]); writeln(Datei,'0'+inttostr(i)+'ox:'+inttostr(Start[i].X)); writeln(Datei,'0'+inttostr(i)+'oy:'+inttostr(Start[i].Y)); writeln(Datei,'0'+inttostr(i)+'ux:'+inttostr(Finish[i].X)); writeln(Datei,'0'+inttostr(i)+'uy:'+inttostr(Finish[i].Y)); end else begin writeln(Datei,'//'+RadioGroup1.Items[i-1]); writeln(Datei,inttostr(i)+'ox:'+inttostr(Start[i].X)); writeln(Datei,inttostr(i)+'oy:'+inttostr(Start[i].Y)); writeln(Datei,inttostr(i)+'ux:'+inttostr(Finish[i].X)); writeln(Datei,inttostr(i)+'uy:'+inttostr(Finish[i].Y)); end; end;
end; |
In der Datei die rauskommt ist zuerst alles richtig und sieht ungefähr so aus:
01ox:336
01oy:52
01ux:418
01uy:92
...
und die untersten 2 Zeilen sind:
15ox:669
15oy:
da hört es dann einfach auf, obwohl noch mehr kommen müsste!
Ich habe auch sichergestellt, das die Variablen die dafür verwendet werden belegt sind!
Ich kann es mir nicht erklären, ich hoffe das ihr es könnt :D
Vielen Dank schonmal!
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Fr 22.01.2010 um 23:44
P@u1 - Fr 22.01.10 22:17
ok, habs selbst behoben.
Hab einfach noch closefile dahinter geschrieben.
Ich versteh zwar nicht warum man das braucht, das hat aber geholfen
Tilman - Fr 22.01.10 22:22
Also man sollte Dateien wenn man fertig ist immer schließen, weil sonst andere Programme nicht darauf zugreifen können. In dem Fall könnte es daran liegen dass die Daten noch im Cache lagen und noch nicht wirklich in die Datei geschrieben worden sind, keine Ahnung ob das stimmt aber wär möglich.
//edit
Könnte man übrigens auch mit ner Typisierten Datei machen, hat den Nachteil dass die Datei anschließend nicht über einen normalen Texteditor angezeigt / geändert werden kann. Solltest du das wünschen wäre vermutlich eine INI-Datei die bessere Lösung.
Aus dem Kopf und daher ungetestet:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure ... type tIrgendwelcheDaten = packed record Start: tPoint; Finish: tPoint; ikleinerZehn: Boolean; end;
var datei: file of tIrgendwelcheDaten; daten: tIrgendwelcheDaten;
begin AssignFile(Datei,Path+'\config.txt'); Rewrite(Datei); if i<10 then begin daten.Start := Start[i]; daten.Finish := Finish[i]; daten.ikleinerzehn := true; write(Datei,Daten); end else [..]
CloseFile(Datei); |
Xion - Sa 23.01.10 00:25
Wenn dann würde ich das über eine TIniFile speichern
Tutorial dazu:
http://www.kuknet.de/tutorial1.pdf
Sehr praktisch, aber auch langsam bei größeren Datenmengen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!