Entwickler-Ecke

Dateizugriff - Speichern -> Exception: EInOutError - Meldung 'E/A-fehler


p4nsen - Fr 14.11.03 13:25
Titel: Speichern -> Exception: EInOutError - Meldung 'E/A-fehler
hab da so ne tolle fehlermeldung in meinem progg :shock: , würde nur gern mal wissen wo mögliche fehlerquellen liegen könnten
der fehler lautet wortwörtlich wiefolgt:
Zitat:
Im Projekt "Name.exe" ist eine Exception der Klasse EInOutError aufgetreten. Meldung 'E/A-fehler 32'. Prozess wurde angehalten. Mit einzelnen .... usw.

was kann ich da jetzt machen, wo sollte ich als 1. nachschaun... der fehler tritt halt immer wenn ich speicher auf... da stimmt irgendwas beim dateischreiben nicht, glaube ich.

thx schonma

Moderiert von user profile iconTino: Quote-Tags hinzugefügt; Titel geändert; Topic verschoben.


ErnestoChe - Fr 14.11.03 13:43

Hi,

allgemeine Frage allgemeine Antwort:

Delphi-Hilfe hat folgendes geschrieben:
EInOutError ist die Exception-Klasse für Fehler bei der Dateieingabe/-ausgabe.


Wenn du genau wissen möchtest, warum der Fehler bei dir auftritt, solltest du uns schon mehr Angaben liefern und vor allem deinen Code zum Dateischreiben.

MFG

- Ernesto -


p4nsen - Fr 14.11.03 13:57

naja das mit dem code würd eventuell auch net unbedingt viel helfen, ich poste ihn trotzdem ma

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:
<span style="font-weight: bold">procedure</span> TFPara.Schreibe_Dat;
<span style="font-weight: bold">var</span>
 f01 : TextFile;
 i   : integer;
 dat : string;
begin
 dat := 'test.dat';
 SetLength(zahl , nz + 1); //nz-am anfang festzulegende zahl
 AssignFile(f01 , ppf + dat);
 if FileExists (ppf + 'initest.ini'then begin //ppf-projektpfad
  if Vergleich(1, dat) then begin //prüfung
   //Ausgang_Ansicht;
   exit;
  end;
 end;
 Rewrite(f01);
 Writeln(f01, nx,'          ', ny,'          ', nz);
 for i := 1 to nz do begin
  if RB04.Checked then begin
   zahl[i] := StrToFloat(Tab01.Cells[1 , i]);
  end;
  Writeln(f01, zahl[i]);
 end;
 CloseFile(f01);
end;


Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.


JoelH - Fr 14.11.03 14:02
Titel: hmm,
und ich welcher Zeile passiert der Fehler dann ?


p4nsen - Fr 14.11.03 14:08

der fehler passiert beim Rewrite(f01);
wenn die datei halt angelegt werden, bzw. neu geschrieben werden soll


Keldorn - Fr 14.11.03 14:14

Hallo
zeig mal bitte deine Ladenprocedure und benutzt bitte delphi-tags und keine quote tags.

kann es sein, daß du beim laden vergißt, die Datei zu schließen?

Mfg Frank


p4nsen - Fr 14.11.03 14:26

schließen tu ich die datei schon, hier ma meine laden/lesen funktion



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:
function TFPara.Lese_Dat(wahl : integer) : boolean;
var
 f01   : TextFile;
 i : integer;
 dat   : string;

begin
 result := False;
 dat := 'test.dat';
 SetLength(zahl, nz + 1);
 AssignFile(f01 , ppf + dat);
 Reset(f01);
 Readln(f01, v_nx, v_ny, v_nz);
 if Vergleich(1 , dat) then begin
  //Ausgangs_Ansicht;
  result := True;
  exit;
 end;
 case wahl of
  1:  for i := 1 to nz do begin
       Readln(f01, zahl[i]);
      end;
  2:  exit;
 end;
 CloseFile(f01);
end;


Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.


Keldorn - Fr 14.11.03 14:34

Du könntest dir mit den Delphi-tags ruhig etwas mühe geben :roll: das macht den code leserlicher

p4nsen hat folgendes geschrieben:
schließen tu ich die datei schon, hier ma meine laden/lesen funktion

sicher?

du öffnest die
Zitat:

function TFPara.Lese_Dat(wahl : integer) : boolean;
...
AssignFile(f01 , ppf + dat);
Reset(f01);
...


und schließt die wieder
Zitat:

CloseFile(f01);

dazwischen sehe ich jede menge exit´s. wenn ein exit angesprochen , wird dein closefile nie erreicht, die datei bleibt offen und ist höchstwahrscheinlich deine Exception ursache.

Mfg Frank


p4nsen - Fr 14.11.03 14:49

lol :lol: ok hast recht, durch meinen 2. case fall ist der fehler entstanden ^^
hab den zweig jetzt ganz weggelassen, da er so oder so eine unnütze funktion hatte
danke nochma bin echt fast verzweifelt :roll: :roll:
thxxxxxxxxxxxxxxxx :D