![]() |
Re: Wieder E/A-Fehler...aber ich finde ihn nicht
Zitat:
setz doch mal den Vorschlag von turboPASCAL um. Wenn du mit IOResult und nicht mit Exception arbeitest, muss der Compilerschalter {$I-} gesetzt werden. Dann solltest du evtll. mal den FileMode prüfen:
Delphi-Quellcode:
und wenn es dann noch nicht geht, hast du vielleicht keine Schreibrechte auf E?
if FileMode <> fmOpenReadWrite then
MessageDlg('Achtung, FileMode setzen', mtWarning, [mbOK], 0); Cu, Frank [EDIT] Und evtll. statt Reset mal System.Reset - manchmal werden in anderen Units gleichlautende Funktionen definiert... |
Re: Wieder E/A-Fehler...aber ich finde ihn nicht
Was der Fehler ist ist:
Zitat:
Zitat:
|
Re: Wieder E/A-Fehler...aber ich finde ihn nicht
Aslo zur Erleuterung:
Delphi-Quellcode:
var
f: TextFile; daten1: array[1..100] of string; s: string; i, err: Integer; function ShowEAErrors(Error: Integer): string; begin case Error of 100: Result := 'Fehler beim Lesen vom Datenträger'; 101: Result := 'Fehler beim Schreiben auf Datenträger'; 102: Result := 'Dateivariable ist keiner Datei zugewiesen'; 103: Result := 'Datei nicht geöffnet'; 104: Result := 'Datei wurde nicht für Leseoperationen geöffnet'; 105: Result := 'Datei wurde nicht für Schreiboperationen geöffnet'; 106: Result := 'Ungültiges numerisches Format'; else Result := 'Nicht dokumentierter Fehler'; end; end; procedure SaveFile; begin err := 0; AssignFile(f, 'c:\aaa.txt'); {$I-} Rewrite(f); // Erzeuge Datei neu ! {$I+} err := IOResult; if err = 0 then // Wenn kein Fehler vorhanden dann Daten schreiben begin for i:=1 to 100 do begin daten1[i] := inttostr(i); //Fülle das Array einfach sinnlos mit einem String {$I-} writeln(f, daten1[i]); // Daten schreiben {$I+} err := IOResult; if err <> 0 then begin ShowMessage(ShowEAErrors(err)); break; end; end; end else ShowMessage(ShowEAErrors(err)); CloseFile(f); end; procedure OpenFile; begin err := 0; AssignFile(f, 'c:\aaa.txt'); {$I-} Reset(f); // Datei nur zum lesen öffnen ! {$I+} err := IOResult; if err = 0 then // Wenn kein Fehler vorhanden dann Daten schreiben begin for i:=1 to 100 do readln(f, daten1[i]); // Daten in Array lesen end else ShowMessage(ShowEAErrors(err)); CloseFile(f); end; procedure AppendFile; begin err := 0; AssignFile(f, 'c:\aaa.txt'); {$I-} Append(f); // Datei zum anhängen von Daten öffnen //(geht nur wenn Datei vorhanden) {$I+} err := IOResult; if err = 0 then // Wenn kein Fehler vorhanden dann Daten anhängen begin for i:=1 to 100 do begin daten1[i] := ... Writeln(f, daten1[i]); // Daten an vorh. Daten anhängen / schreiben end; end else ShowMessage(ShowEAErrors(err)); CloseFile(f); end; |
Re: Wieder E/A-Fehler...aber ich finde ihn nicht
Aslo heisst das in Deinem Fall dass das dann so aus sehen sollte:
Delphi-Quellcode:
// Edit: PS.: Ist das jetzt ein Tut ? :mrgreen:
var
f: Textfile; daten1: array[1..100] of string; s: string; i, err: Integer; function ShowEAErrors(Error: Integer): string; begin case Error of 100: Result := 'Fehler beim Lesen vom Datenträger'; 101: Result := 'Fehler beim Schreiben auf Datenträger'; 102: Result := 'Dateivariable ist keiner Datei zugewiesen'; 103: Result := 'Datei nicht geöffnet'; 104: Result := 'Datei wurde nicht für Leseoperationen geöffnet'; 105: Result := 'Datei wurde nicht für Schreiboperationen geöffnet'; 106: Result := 'Ungültiges numerisches Format'; else Result := 'Nicht dokumentierter Fehler'; end; end; procedure So_und_so; begin err := 0; // braucht man eigentlich nich machen // da IOresult den Wert setzt... AssignFile(f, 'c:\aaa.txt'); {$I-} Append(f); // Öffne Datei zum anhangen von Text {$I+} err := IOResult; if err <> 0 then // Wenn keine Datei da dann neu erstellen begin {$I-} Rewrite(f); // Erstelle Datei neu (Schreibrechte) {$I+} err := IOResult; end; if err = 0 then // Keine Fehler ? dann los begin for i:=1 to 100 do begin daten1[i] := inttostr(i); //Fülle das Array einfach sinnlos mit einem String writeln(f, daten1[i]); // Daten schreiben end; end else // Fehler !? Was für einer ? ShowMessage(ShowEAErrors(err)); CloseFile(f); // Datei schliessen end; |
Re: Wieder E/A-Fehler...aber ich finde ihn nicht
also Schreibrechte habe ich, Datei wird ja erstellt. Es steht auch eine '1' drin, also wird die Schleife einmal durchlaufen und dann bricht er ab.
den Vorschlag von turbopascal habe ich durchgeführt. entweder 103(reset) oder 105(rewrite). siehe weiter oben mein edit. Bin etwas ratlos, denn normalerweise müßte es ja auch gehen und langsam habe ich auch die Faxen dicke. Kann doch nicht sein, daß es da Fehlermeldung gibt wenn es nicht sein kann! Die Beispiele im Forum gehen ja schließlich auch. Und irgendwie ist es ja wohl total unlogisch, daß die Datei erstellt wird, geöffnet und nur einmal beschrieben wird. Der Virenscanner schlägt auch nicht an und auf der Festplatte sind 1GB frei. Wer hat Vorschläge, wie ich es machen könnte? -Datei erstellen -Öffnen zum beschreiben/überschreiben -in einer Schleife Strings schreiben - Datei schließen Vielen Dank schon mal. |
Re: Wieder E/A-Fehler...aber ich finde ihn nicht
mit append wird die datei ebenfalls geöffnet und um eine '1' erweitert- also wird die schreibsequenz wieder einmal ausgeführt und dann abgebrochen. Ich formartiere das hier gleich neu.....
Also, Datei wird eröffnet und einmal beschrieben - was nun? |
Re: Wieder E/A-Fehler...aber ich finde ihn nicht
Was willst denn Du überhaubt machen ?
|
Re: Wieder E/A-Fehler...aber ich finde ihn nicht
Habe ich doch geschrieben und dürfte doch auch aus meinem Quelltext erkenntlich sein...
-Datei erstellen -Öffnen zum beschreiben/überschreiben -in einer Schleife Strings schreiben - Datei schließen |
Re: Wieder E/A-Fehler...aber ich finde ihn nicht
Hab ich doch alles beschrieben, Reset öffnet nur zum lesen, rewrite öffnet zum erstellen und überschreiben un append fügt Text an.
Anders geht es mit Writeln/Readeln nicht in Textdateien. |
Re: Wieder E/A-Fehler...aber ich finde ihn nicht
irgendwie habe ich den Eindruck, hier liest keiner was ich schreibe.
"mit append wird die datei ebenfalls geöffnet und um eine '1' erweitert- also wird die schreibsequenz wieder einmal ausgeführt und dann abgebrochen. Ich formartiere das hier gleich neu..... Also, Datei wird eröffnet und einmal beschrieben - was nun? " also klappt das Erstellen, Öffnen und Beschreiben. Nur nach einem Schreibvorgang kommt die Fehlermeldung und das Programm bricht ab. An was kann das Liegen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz