Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi IOResult funktioniert nicht korrekt (https://www.delphipraxis.net/40050-ioresult-funktioniert-nicht-korrekt.html)

d-a2005 11. Feb 2005 07:56

Re: IOResult funktioniert nicht korrekt
 
Unter TP gabs mal FileMode, damit konnte man angeben, ob eine Datei nur zum Lesen, zum Schreiben oder für beides geöffnet werden soll.

Werte für FileMode waren 0,1, und 2, soweit ich weiß.

Vielleicht hilft dir das.

d-a2005 11. Feb 2005 09:06

Re: IOResult funktioniert nicht korrekt
 
Ach ja, muß es nicht überhaupt so heißen:

1 {$I-}
2 assign(f,'fehler.rec');
3 reset(f);
4 {$I+}
5 ioerror := (IOResult = 0);


also erst {$I+} wieder einschalten?

alcaeus 11. Feb 2005 09:10

Re: IOResult funktioniert nicht korrekt
 
Zitat:

Zitat von d-a2005
Ach ja, muß es nicht überhaupt so heißen:

1 {$I-}
2 assign(f,'fehler.rec');
3 reset(f);
4 {$I+}
5 ioerror := (IOResult = 0);


also erst {$I+} wieder einschalten?

das hab ich mir auch schon gedacht, und in der Delphi-OH ist es auch so drin:
Delphi-Quellcode:
var
  F: file of Byte;
begin
  if OpenDialog1.Execute then
  begin
    AssignFile(F, OpenDialog1.FileName);
    {$I-}
    Reset(F);
    {$I+}
    if IOResult = 0 then
    begin
      MessageDlg('File size in bytes: ' + IntToStr(FileSize(F)),
        mtInformation, [mbOk], 0);
      CloseFile(F);
    end
    else
      MessageDlg('File access error', mtWarning, [mbOk], 0);
  end;
end;
AFAIR war das auch schon bei TP7 so, dass vor dem Abfragen von IOResult erstmal {$I+} ausgeführt werden mussste...

Greetz
alcaeus

eddy 11. Feb 2005 09:33

Re: IOResult funktioniert nicht korrekt
 
Hallo wespi,

Dein Fehler ist kaum nachvollziehbar (siehe Luckis Beitrag).

Hier nochmal der Standardaufbau, den ich dann jeweils bei Bedarf anpasse.

Delphi-Quellcode:
uses
  System;  

var
  ioerr : integer;

begin
    {$I-}
    AssignFile(f, lw_path_und_filename);
    Reset(f); // für Lesen oder
    Append(f); // für Anhängen
    if IOResult <> 0 then begin // Fehler beim Öffnen
      Rewrite(f);
      ioerr := IOResult;
      if ioerr <> 0 then begin
        ShowMessage('Datei konnte nicht angelegt werden' + chr($0A)+chr($0D) + 
                    'Fehler-Nummer: ' + IntToStr(ioerr));
        exit;
      end;
    end;
    Append(f);
    Writeln(f, 'irgendwas');
    Flush(f); // Sicherstellen, daß der Text tatsächlich in die Datei geschrieben wird.
    CloseFile(f);
    {$I+}
end;
{$I-} bzw. {$I+} muß nicht ständig umgeswitcht werden.

Wegen so einem Fehler wieder auf TP umsteigen, ich würd's mir noch mal überlegen. Es gibt nunmal gelegentlich Fehler, wo man einen halben Tag sucht, nur um festzustellen, daß die Logik von Delphi nicht kompatibel ist mit der Logik des Programmierers.

Zum Glück sind die meisten Programmierer lernfähig!!

mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 Uhr.
Seite 3 von 3     123   

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