Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi fehler E/A 105 (https://www.delphipraxis.net/90662-fehler-e-105-a.html)

Mosi17 21. Apr 2007 13:16


fehler E/A 105
 
Delphi-Quellcode:
reset(datei);
[...]
   if zahl2=0
    then
     begin
     [u]writeln(datei,name);[/u]
     writeln(datei,inttostr(zeit));
     end
    else
     begin
     for i:=1 to zahl2*2 do
      begin
      readln(datei);
      end;
     writeln(datei,name);
     writeln(datei,inttostr(zeit));
     end;
   end;
closefile(datei);
Bei der unterstrichenen Zeile erhalten ich immer den oben genannten Fehler. Falls ich ein rewrite(datei) davor setzte kommt er nicht und es klappt alles wunderbar, doch das ist ziemlich schlecht für mich, weil ich mehrere Highscores in dieser einen Datei speichern möchte.
Falls einer die Lösung des Problems kennt, wär ich sehr dankbar für Hilfe... :wink:

Klaus01 21. Apr 2007 13:21

Re: fehler E/A 105
 
Textdateien kannst Du nicht mit reset zum Schreiben öffnen.
Das geht nur mit typisierten Dateien (record).

Versuche es einmal mit append, damit wird etwas an die Datei angehängt.
Oder steige auf StringListen um. Dort kannst Du direkt in der Liste etwas ändern.
Du kannst damit auch direkt Zeilen ansprechen, nützlich, wenn immer etwas in der gleichen Zeile
steht.

Ansonsten bleibt Dir nicht viel anderes übrig als die Daten immer zu kopieren
und in eine neue Datei (rewrite) zu schreiben und diese dann wieder umzubennen.

Grüße
Klaus

Mosi17 21. Apr 2007 20:32

Re: fehler E/A 105
 
hab es jetzt anders gelöst. speichere die erforderlichen daten in ein array. so dass mir das rewrite kein problem mehr machen würde...so aber jetzt gibts ein neues Problem - ich erhalte den E/A Fehler 32 bei dieser Stelle:
Delphi-Quellcode:
if rb_sehrleicht.checked=true
 then assignfile(datei,'highscores/sehrleicht.txt');
if rb_leicht.checked=true
 then assignfile(datei,'highscores/leicht.txt');
if rb_mittel.checked=true
 then assignfile(datei,'highscores/mittel.txt');
if rb_schwierig.checked=true
 then assignfile(datei,'highscores/schwierig.txt');
if rb_sehrschwierig.checked=true
 then assignfile(datei,'highscores/sehrschwierig.txt');
name:=ed_name.Text;
[...]
rewrite(datei);
for i:=0 to 4 do
 begin
 writeln(datei,highscore[i,0]);
 writeln(datei,highscore[i,1]);
 end;
closefile(datei);
und zwar bei dem "rewrite(datei)"

mkinzler 21. Apr 2007 20:44

Re: fehler E/A 105
 
Welche Typ hat Datei?

Ich würde zudem so vereinfachen:
Delphi-Quellcode:
if rb_sehrleicht.checked=true then fname := 'highscores/leicht.txt';
...
assignfile(datei,fname);

Mosi17 21. Apr 2007 20:46

Re: fehler E/A 105
 
also datei ist vom typ textfile; :roll:

und danke für den hinweis, sieht wirklich besser aus :-)

mkinzler 21. Apr 2007 20:51

Re: fehler E/A 105
 
Kann es sein, daß die entsprechende Datei schon geöffnet ist?

Mosi17 21. Apr 2007 21:14

Re: fehler E/A 105
 
hast recht, war noch aus einer anderen prozedur geöffnet.
danke hat sich erledigt :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz