Entwickler-Ecke
Sonstiges (Delphi) - Begreife E/A-Fehler nicht
Gabberman - Mo 15.01.07 19:42
Titel: Begreife E/A-Fehler nicht
Hy an alle,
ich hab ma wieder ein Problem.
In meinem Programm gibt es folgende Routine:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| AssignFile(optionen, 'data/optionen.dat'); Reset(optionen); AssignFile(optionen_neu, 'data/optionen.tmp'); Rewrite(optionen_neu); for i:=0 to (optioncolour-1) do begin Readln(optionen, ausgelesen); Writeln(optionen_neu, ausgelesen); end; Writeln(optionen_neu, farbeausgewaehlt.caption); while not EOF(optionen) do begin Readln(optionen, ausgelesen); Writeln(optionen_neu, ausgelesen); end; farbeausgewaehlt.Caption:=''; CloseFile(optionen); DeleteFile('data/optionen.dat'); Reset(optionen_neu); AssignFile(optionen, 'data/optionen.dat'); Rewrite(optionen); |
Also zur Erklärung:
Es wird quasi eine Änderung in einer .dat Datei vorgenommen. Eigentlich nicht so schwer. Der ließt halt alles bis zum zu ändernden aus der alten Datei, schreibt das ausgelesene in eine .tmp datei. Dann werden beide geschlossen. Die .dat soll gelöscht und wieder neu erstellt werden um dann zu guterletzt alles aus der .tmp wieder in die .dat zu schreiben.
So weit so gut. Nu kommt an markierter Stelle immer der E/A-Fehler und ich hab echt keinen Plan was falsch sein soll!!!
Ich hoffe, dass jemand von euch mir helfen kann!!!
Gruß
Gabberman
[mod="Tino"]Im Titel "Ich glaub ich bin zu doof:" entfernt.
Kroko - Mo 15.01.07 19:44
(1) verwende nie relative Pfade, sondern immer absolute!
(2) schau dir mal CopyFile an!
Gabberman - Mo 15.01.07 19:47
sorry aber davon kannst du mich nicht überzeugen. Das kann auch nicht der Fehler sein. Hab ich schon probiert:
Delphi-Quelltext
1: 2:
| GetDir(0,path) path:=path + 'data/optionen.tmp'; |
und so weiter... ging auch ni!!!
jakobwenzel - Mo 15.01.07 19:47
Vielleicht solltest du dir erstmal darüber im klaren werden, was dieser Fehler bedeutet:
| Zitat: |
EA-Fehler 32 ist eine "Sharing Violation", das bedeutet, dass die Datei gerade noch von einem anderen oder deinem Programm offen gehalten wird. |
Gabberman - Mo 15.01.07 19:48
Ja ich hab die Fehlerbeschreibung in der Hilfe auch gelesen, aber ich weiß das niemand anderes darauf zugreift!!!
Sorry, aber es hat sich grade selber erledigt... :oops: Danke trotzdem!!!
jakobwenzel - Mo 15.01.07 19:50
OK, ich hab grad gesehn, dass du die Datei schonmal lädst...
Probier mal ein sleep mit nem Wert von 1000 (erstmal zum Testen nen so hohen Wert), weil Windows vllt. nicht mit dem Verwalten der Dateizeiger hinterherkommt. Wenns dann klappt, kannste den Wert schrittweise verkleinern.
Narses - Mo 15.01.07 19:51
Moin!
Warum nimmst du keine INI-Datei? ;)
cu
Narses
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!