Delphi-PRAXiS
Seite 1 von 7  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler bei REWRITE (https://www.delphipraxis.net/54630-fehler-bei-rewrite.html)

Chrissi91 8. Okt 2005 13:13


Fehler bei REWRITE
 
Delphi-Quellcode:
if fileexists('Eintrage.txt') then
 begin
  assignfile(datei2,'Eintrage.txt');
  reset(datei2);
  readln(datei2,hilf);
   if hilf <> '' then
    begin
     reset(datei2);
     append(datei2);
     writeln(datei2,edit1.text+' '+edit2.text);
    end else
    begin
     rewrite(datei2); <-- Hier Fehlermeldung
     writeln(datei2,edit1.text+' '+edit2.text);
    end;
   closefile(datei2);
  end else
  begin
   assignfile(datei2,'Eintrage.txt');
   rewrite(datei2);
   writeln(datei2,edit1.text+' '+edit2.text);
   closefile(datei2);
  end;
 end;
Fehlermeldung: ElnOutError I/0 error 32

Folgende Variablen wurden in der Procedur deklariert:

Delphi-Quellcode:
var
datei2: textfile;
hilf: string;
Keine Variablen wurden global deklariert.

Die Datei existiert. Sie ist aber leer. Deshalb habe ich mit der IF-Abfrage geprüft, ob sie leer ist, da der Befehl append bei leeren Dateien nicht funktioniert (meiner Meinung nach). Nun soll mit rewrite und writeln etwas in die Datei geschrieben werden. ICH HABE AUCH DIE SUCHMASCHINE BENUTZT, habe aber nichts gefunden, was mir weiterhelfen konnte.

Sharky 8. Okt 2005 13:25

Re: Fehler bei REWRITE
 
Hai Chrissi91,

ich habe deinen Code mal so formatiert das man die IF-ELSE die zusammen gehören auch erkennen kann ;-)
Was ich nicht verstehe: Was möchtest Du denn machen? Wenn etwas in der Datei steht möchtest Du sie erzeugen und dann etwas rein schreiben. Wenn aber schon etwas in der Datei steht möchtest Du noch etwas anhängen?
Delphi-Quellcode:
procedure TForm1.btn_TestClick(Sender: TObject);
var
  datei2: textfile;
  hilf: string;
begin
  if fileexists('Eintrage.txt') then
  begin
    assignfile(datei2, 'Eintrage.txt');
    reset(datei2);
    readln(datei2, hilf);
    if hilf <> '' then
    begin
      reset(datei2);
      append(datei2);
      writeln(datei2, edit1.Text + ' ' + edit2.Text);
    end
    else
    begin
      rewrite(datei2);// <-- Hier Fehlermeldung
      writeln(datei2, edit1.Text + ' ' + edit2.Text);
    end;
    closefile(datei2);
  end
  else
  begin
    assignfile(datei2, 'Eintrage.txt');
    rewrite(datei2);
    writeln(datei2, edit1.Text + ' ' + edit2.Text);
    closefile(datei2);
  end;
end;
Darum mag ich keine end-else in einer Zeile *g*

Chrissi91 8. Okt 2005 13:28

Re: Fehler bei REWRITE
 
Es ist ja für mein Adressverzeichnis.

Wenn die Datei nicht existiert, soll sie erstellt werden.
Wenn die Datei existiert, soll etwas angehängt werden.
Aber wenn die Datei leer ist, funktioniert ja der Befehl append nicht, ...

Sharky 8. Okt 2005 13:34

Re: Fehler bei REWRITE
 
Hai Chrissi91,

vergleiche noch einmal genau deinen Code und meinen. Du wirst bemerken das bei dir wohl ein end; zu viel ist.

Bei mir geht es nämlich ohne Probleme.

Zitat:

Zitat von Chrissi91
...Aber wenn die Datei leer ist, funktioniert ja der Befehl append nicht, ...

:?: Warum soll der nicht gehen?

Chrissi91 8. Okt 2005 13:41

Re: Fehler bei REWRITE
 
Weill dann eine Fehlermeldung kam ... ^^

Ich habe meinen Code durch deinen ersetzt und die Fehlermeldung kam trotzdem :'(

Sharky 8. Okt 2005 13:46

Re: Fehler bei REWRITE
 
Zitat:

Zitat von Chrissi91
...Ich habe meinen Code durch deinen ersetzt und die Fehlermeldung kam trotzdem :'(

Verstehe ich jetzt nicht.
Mit dieser (verkürzten) Variante habe ich auch kein Problem:
Delphi-Quellcode:
procedure TForm1.btn_TestClick(Sender: TObject);
var
  datei2: textfile;
  filename : string;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'Eintrage.txt';
  assignfile(datei2,filename);
  if not fileexists(filename) then
  begin
    rewrite(datei2);
  end
  else
  begin
    reset(datei2);
  end;
  append(datei2);
  writeln(datei2, edit1.Text + ' ' + edit2.Text);
  closefile(datei2);
end;

Chrissi91 8. Okt 2005 13:49

Re: Fehler bei REWRITE
 
Ich versuch es dir nochmal zu erklären ;)

Ich habe eine Index-Datei, in der die Dateinamen der Datensätze für mein Adressverzeichnis drinstehen. Wenn der Benutzer sich das Programm runterlädt, ist meistens noch keine Index-Datei dabei. Diese soll beim Erstellen des ersten Eintrages miterstellt werden. Dann soll der Dateiname in die Index-Datei getan werden. Und zwar wollte ich das so machen:

Delphi-Quellcode:
var
datei: textfile;
begin
assignfile(datei,'Eintrage.txt'); //Das ist die Index-Datei
rewrite(datei);
writeln(datei, edit1.text+' '+edit2.text+'.txt') //Daraus setzt sich der Dateiname zusammen
closefile(datei);
end;
Geht das so, wenn die Datei noch nicht existiert und erstellt werden soll?

Existiert die Index-Datei doch schon, dann soll einfach nur eine Zeile angefügt werden:

Delphi-Quellcode:
var
datei2: textfile;
begin
assignfile(datei2,'Eintrage.txt'); //Das ist die Index-Datei
append(datei2);
writeln(datei2, edit1.text+' '+edit2.text+'.txt') //Daraus setzt sich der Dateiname zusammen
closefile(datei2);
end;
Um das zu verbinden will ich das so machen:

Delphi-Quellcode:
var
datei, datei2: textfile;
begin
if fileexists('Eintrage.txt') then
 begin
  assignfile(datei2,'Eintrage.txt'); //Das ist die Index-Datei
  append(datei2);
  writeln(datei2, edit1.text+' '+edit2.text+'.txt') //Daraus setzt sich der Dateiname zusammen
  closefile(datei2);
 end
 else
 begin
  assignfile(datei,'Eintrage.txt'); //Das ist die Index-Datei
  rewrite(datei);
  writeln(datei, edit1.text+' '+edit2.text+'.txt') //Daraus setzt sich der Dateiname zusammen
  closefile(datei);
 end;
end;
Soweit mitgekommen? ;)

Bei mir funktioniert das ganze mit Append aber nicht, wenn Eintrage.txt total leer ist.

Sharky 8. Okt 2005 14:30

Re: Fehler bei REWRITE
 
Zitat:

Zitat von Chrissi91
... Bei mir funktioniert das ganze mit Append aber nicht, wenn Eintrage.txt total leer ist.

Wie gesagt: Bei mir geht es:

Zitat:

Um das zu verbinden will ich das so machen:
Hast Du denn jetzt mal mein zweites Codebeispiel getestet oder es Dir zumindest einmal angesehen?

Du sagst Du bekommst diesen Fehler "ElnOutError I/0 error 32". Hast Du schon einmal geschaut was der bedeutet?
Das F1 Ding sagt
Verletzung bei der gemeinsamen Benutzung

Eventuell hilft Dir das ja bei deiner Fehlersuche ;-)

Chrissi91 8. Okt 2005 14:36

Re: Fehler bei REWRITE
 
Dein 2. Code hat mir nicht weitergeholfen. Die Fehlermeldung hilft mir auch nicht weiter ... ;)

:coder: Dann werde ich mal weiter versuchen ...

Luckie 8. Okt 2005 14:39

Re: Fehler bei REWRITE
 
Dieser Code von Sharky tut wunderbar das, was du willst: Bei nicht vorhanden sein neu erstellen, bei vorhanden sein anhängen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr.
Seite 1 von 7  1 23     Letzte »    

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