Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sporadischer E/A 6 Fehler (https://www.delphipraxis.net/129816-sporadischer-e-6-fehler.html)

Carsten1234 26. Feb 2009 06:32


Sporadischer E/A 6 Fehler
 
Hallo zusammen,

von einem über COM angeschlossenes Gerät werden Daten ausgelesen und in eine (Text-) Datei geschrieben. Ist dieser Vorgang abgeschlossen, wird die Datei zuerst natürlich geschlossen, um sie dann im nächsten Schritt lesen zu öffnen. Dabei tritt allerdings sporadisch ein E/A-Fehler 6 auf, den ich mir nicht erklären kann.
Der Code:
Delphi-Quellcode:
var EventFile: System.Text;
    Zeile   : string;
(...)
begin
{$I-} 
  System.AssignFile(EventFile, 'test.tmp');
  System.Rewrite(EventFile);
{$I+}
  if (System.IOResult = 0) then
  begin
    repeat
      {Zeichen vom Gerät auslesen}
      System.Write(EventFile, {EinZeichen});
    until {Abbruchbedingungen}
 
    System.CloseFile(EventFile);
  end;

{$I-} 
  System.AssignFile(EventFile, 'test.tmp');
  System.Reset(EventFile);
{$I+}
  if (System.IOResult = 0) then
  begin
    while not (EoF(EventFile)) do
    begin
      System.Readln(EventFile, Zeile);
    end;
    System.CloseFile(EventFile);
  end;
Es knallt an der Stelle "while not (EoF(EventFile)) do", was ich erst recht merkwürdig finde, da ich zuvor auf IOResult=0 geprüft hatte.
Hat jemand eine Erklärung dafür?
E/A-Fehler 6 ist lt. Hersteller ein INVALID_FILE_HANDLE...

Dank vorab und Gruß, Carsten

Bernhard Geyer 26. Feb 2009 07:19

Re: Sporadischer E/A 6 Fehler
 
Nimm mal komplette Pfadangaben (z.B. mit ExtractFilePath(Application.ExeName) + '\test.tmp'). Ansonsten kann es dir passieren das die Datei entsprechend gerade dem zufälligen aktuellen Pfad der Anwendung erstellt wird.

Carsten1234 26. Feb 2009 07:41

Re: Sporadischer E/A 6 Fehler
 
Zitat:

Zitat von Bernhard Geyer
Nimm mal komplette Pfadangaben (z.B. mit ExtractFilePath(Application.ExeName) + '\test.tmp'). Ansonsten kann es dir passieren das die Datei entsprechend gerade dem zufälligen aktuellen Pfad der Anwendung erstellt wird.

Danke für den Tipp, hat sich inzwischen aber erledigt. Der Dateiname selbst wurde erst dann festgelegt, wenn Daten vom Gerät kamen. Kamen keine und es wurde versucht, anschliessend die Datei lesend zu öffnen, gab es natürlich keinen Dateinamen. :wall: :wall: :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 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