AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wieder E/A-Fehler...aber ich finde ihn nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Wieder E/A-Fehler...aber ich finde ihn nicht

Ein Thema von Kasch · begonnen am 16. Jul 2006 · letzter Beitrag vom 16. Jul 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Wieder E/A-Fehler...aber ich finde ihn nicht

  Alt 16. Jul 2006, 17:56
Zitat von Kasch:
habe ich gerade probiert,allerdings mit rewrite *g
geht auch nicht...Fehlercode 103....und immer beim writeln bleibt erhängen..
achso, Festplatte hat noch Platz, habe ich auch schon überprüft
Hi,

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:
if FileMode <> fmOpenReadWrite then
  MessageDlg('Achtung, FileMode setzen', mtWarning, [mbOK], 0);
und wenn es dann noch nicht geht, hast du vielleicht keine Schreibrechte auf E?

Cu, Frank

[EDIT]
Und evtll. statt Reset mal System.Reset - manchmal werden in anderen Units gleichlautende Funktionen definiert...
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#12

Re: Wieder E/A-Fehler...aber ich finde ihn nicht

  Alt 16. Jul 2006, 18:15
Was der Fehler ist ist:

Zitat:
Warnung: Wenn Sie Reset für eine schreibgeschützte Datei aufrufen, müssen Sie zuvor FileMode zurücksetzen. Auch wenn die Datei nur gelesen werden soll, verursacht der Standardwert von FileMode (Schreib-/Lesezugriff), daß das Öffnen einer schreibgeschützten Datei fehlschlägt.
und:

Zitat:
Bei einer Textdatei ist F nach dem Öffnen schreibgeschützt.

Nach dem Aufruf von Reset hat Eof(F) den Wert True, wenn die Datei leer ist. Andernfalls ist Eof(F) False.
F1
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#13

Re: Wieder E/A-Fehler...aber ich finde ihn nicht

  Alt 16. Jul 2006, 18:31
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;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#14

Re: Wieder E/A-Fehler...aber ich finde ihn nicht

  Alt 16. Jul 2006, 18:39
Aslo heisst das in Deinem Fall dass das dann so aus sehen sollte:

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 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;
// Edit: PS.: Ist das jetzt ein Tut ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Kasch

Registriert seit: 12. Nov 2005
49 Beiträge
 
#15

Re: Wieder E/A-Fehler...aber ich finde ihn nicht

  Alt 16. Jul 2006, 18:43
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.
  Mit Zitat antworten Zitat
Kasch

Registriert seit: 12. Nov 2005
49 Beiträge
 
#16

Re: Wieder E/A-Fehler...aber ich finde ihn nicht

  Alt 16. Jul 2006, 18:46
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?
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#17

Re: Wieder E/A-Fehler...aber ich finde ihn nicht

  Alt 16. Jul 2006, 18:48
Was willst denn Du überhaubt machen ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Kasch

Registriert seit: 12. Nov 2005
49 Beiträge
 
#18

Re: Wieder E/A-Fehler...aber ich finde ihn nicht

  Alt 16. Jul 2006, 18:52
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
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#19

Re: Wieder E/A-Fehler...aber ich finde ihn nicht

  Alt 16. Jul 2006, 18:56
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.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Kasch

Registriert seit: 12. Nov 2005
49 Beiträge
 
#20

Re: Wieder E/A-Fehler...aber ich finde ihn nicht

  Alt 16. Jul 2006, 19:05
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 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