Entwickler-Ecke
Dateizugriff - Exception EInOutError
Bronstein - Mo 21.06.10 16:20
Titel: Exception EInOutError
Hallo,
ich bekomme an einem Rechnern folgende Fehlermeldung:
Quelltext
1: 2:
| Exception EInOutError in Modul XXXX.exe bei 000B2733. Device write error. |
Mein Programm macht eigentlich nichts anderes als Daten von eimem ComPort einzulesen (dazu verwendete ich die Komponete ApdComPort) und in eine Datei zu speichern.
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:
| procedure SpeichernScan(Nr, Platz: ShortString); var t_Datei: TextFile; tmpStr: ShortString; begin try tmpStr := ExtractFilePath(ParamStr(0)); tmpStr := tmpStr + 'ScanDaten\' + FormatDateTime('dd.mm.yyyy', now) + '.txt'; while IsFileInUse(tmpStr) do sleep(10); if Fileexists(tmpStr) then AssignFile(t_Datei, tmpStr) else begin AssignFile(t_Datei, tmpStr); Rewrite(t_Datei); end; ReSet(t_datei); Append(t_Datei); DateSeparator := '.'; WriteLn(t_Datei, Platz + '|' + Nr + '|' + FormatDateTime('dd.mm.yyyy hh:mm:ss', now)); CloseFile(t_Datei); except FehlerProtokoll('Fehler beim Speichern;' + Nr + ';' + Platz, 'Allgemein'); end; end; |
Das funktioniert auch wunderbar, bei den meisten Rechnern, jetzt habe ich aber einen Rechner bei dem es nicht funktioniert und nach einer gewissen Zeit der oben genannte Fehler auftaucht.
Hat jemand eine Idee wie ich das Problem lösen kann?
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Mo 21.06.2010 um 16:47
Andreas L. - Mo 21.06.10 16:28
Du schreibst die Daten in das Programmverzeichnis, das ist schonmal nicht gut. Hast du dort Schreibrechte? Unter Vista und Win 7 ist man standardmäßig ein normaler Benutzer und hat an vielen Orten keine Schreibrechte...
Gammatester - Mo 21.06.10 16:52
Unabhängig von Andreas L.'s Einwand - der Code muß doch wohl sinnvollerweise
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| if Fileexists(tmpStr) then begin AssignFile(t_Datei, tmpStr) Append(t_Datei); end else begin AssignFile(t_Datei, tmpStr); Rewrite(t_Datei); end; |
lauten statt
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| if Fileexists(tmpStr) then AssignFile(t_Datei, tmpStr) else begin AssignFile(t_Datei, tmpStr); Rewrite(t_Datei); end; ReSet(t_datei); Append(t_Datei); |
Außerdem: Bist Du sicher, daß es in dem gezeigten Teil kracht? Warum springt dann die Exception nicht an? Wird die IDE auf die Fehlerstelle positioniert?
Bronstein - Mo 21.06.10 18:50
@Andreas L.
Schreibrechte habe ich ja. Wenn ich das Programm neu gestartet habe, funktioniert es ja erstmal ein paar Stunden, bis der Fehler auftritt
@Gammatester
Den Fehler konnte ich noch nicht auf meinem Rechner reproduzieren. Ich habe das Programm ja auf ca. 30 Rechnern laufen und bei zwei steigt es nach x-Stunden aus!
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!