![]() |
IOResult funktioniert nicht korrekt
Hallo,
ich bin von BP7 auf Delhi7 umgestiegen und versuche nun meine pas-files aus BP7-Zeiten unter Delphi zum Laufen zu kriegen. Nun steh ich vor einem Fehler, der mich stark nervt : 1 {$I-} 2 assign(f,'fehler.rec'); 3 reset(f); 4 ioerror := (IOResult = 0); Die Datei fehler.rec existiert nicht. Im Debug-Fenster überwachte Ausdrücke wird nach Abarbeiten von reset(f) IOResult mit Wert 2 angezeigt, wie sich das bei nicht existierender Datei auch gehört, in ioerror steht jedoch nach Abarbeiten von Zeile 4 der Wert 0, statt 2. Unter BP7 hat die source einwandfrei funktioniert; Hat jemand 'ne Lösung ????? Besten Dank für Eure Hilfe |
Re: IOResult funktioniert nicht korrekt
Hallo wespi,
IOResult hat einen Wert <> 0 falls ein Fehler aufgetreten ist. Deshalb müsste (logischerweise) die Zuweisung so lauten:
Delphi-Quellcode:
Ist ioerror nun true, so ist ein Fehler aufgetreten.
ioerror := IOResult <> 0;
Greetz alcaeus |
Re: IOResult funktioniert nicht korrekt
Hallo wespi,
Deine 4. Programmzeile paßt nicht zu Deiner Erklärung. ioerror := (IOResult = 0); liefert entweder wahr oder falsch, dh. ioerror : Boolean; Sollte Dein ioerror : Integer sein, mußt Du Deine 4. Zeile wandeln in:
Delphi-Quellcode:
mfg
ioerror := IOResult;
//Auswertungen dann mit: if ioerror <> 0 then begin //... end; eddy |
Re: IOResult funktioniert nicht korrekt
Zitat:
|
Re: IOResult funktioniert nicht korrekt
Hallo,
Entschuldigung, ich habe meinen Quelltext falsch wiedergegeben. IoError ist ein Integer, der Compiler hätte das natürlich sofort angemeckert. Zeile 4 heisst natürlich : IoError := IoResult; Was jedoch nichts an der Tatsache ändert, dass nach Abarbeiten von Zeile 3 (reset) das Debugfenster zwar IoResult mit dem Wert 2 (fehlende Datei) meldet, dieser Wert jedoch nach Abarbeiten von Zeile 4 nicht in IoError steht, sondern der Wert 0. also nochmals 'Tschuldigung, ich hoffe, dass mir trotzdem noch jemand weiterhilft mfg wespi |
Re: IOResult funktioniert nicht korrekt
Wird IOError denn noch mal verwendet? Lass in dir mal mit ShowMessage ausgeben.
|
Re: IOResult funktioniert nicht korrekt
Hallo,
nachdem ich Delphi-Neuling bin, musste ich erst mal nachsehen, wie Showmessage funktioniert. Habe Showmessage jetzt so aufgerufen, ist es das , was Du meinst? : 3 reset(f); 4 Ioerror := ioresult; 5 showmessage(intToStr(ioerror)); Ergebnis ist ein kleines Meldungsfenster mit dem Wert 0. Das habe ich auch nicht anders erwartet, denn ich sehe das ja auch im Überwachungsfenster des Debuggers, dass IoError den Wert 0 hat. Ich habe auch schon nachgesehen, ob ich IoError womöglich nochmal irgendwo deklariert habe, aber es existiert nur 1 mal und ist in der gleichen Unit deklariert, wo auch der Code steht. (var IoError : integer;) Wenn ich den Debugger mit F7 in die System-Unit-Funktion Ioresult laufen lasse, wird schon auf dem "begin" im Überwachungs-Fenster des Debuggers der Wert 2 auf Wert 0 gesetzt. Ich hätte das erst nach der Zeile "result := InOutRes;" erwartet, weil ja lt. Definition IoResult nach!! Aufruf der Funktion zurückgesetzt werden soll.
Delphi-Quellcode:
also, ich begreif's nicht
function IOResult: Integer; // in der Unit System
begin Result := InOutRes; InOutRes := 0; end; mfg wespi [edit=Luckie]Benutz bitte das nächste mal Delphi-Tags. Danke. Mfg, Luckie[/edit] |
Re: IOResult funktioniert nicht korrekt
Vielleicht rufst Du nicht die erwarteten Funktionen auf... (wer weiss, denn der obige Code funktioniert erwartungsgemäß).
Schreib zur Sicherheit / zum Testen den Namensraum (Unitname) vor die Variablen und Funktionen:
Delphi-Quellcode:
{$I-}
System.AssignFile(F, '?invalid?'); System.Reset(F); IoError := System.IOResult; {$I+} |
Re: IOResult funktioniert nicht korrekt
Hab's gerade probiert :
system.assignFile(f,'fehler.rec'); system.reset(f); Ioerror := system.ioresult; showmessage(intToStr(ioerror)); ----> das gleiche Ergebnis. Und das auf zwei unterschiedlichen PC's mit unterschiedlichen OS (WinXP und Win2000) und mit Delphi 5 und Delphi 7. Immer die gleiche Sch.... wenn das so weitergeht, mach ich wieder Turbo-Pascal !!! , da funktionierts problemlos mfg wespi |
Re: IOResult funktioniert nicht korrekt
Hallo wespi!
Hab grad bissl gestöbert und Deinen Beitrag gefunden und ein kleines Testprogramm geschrieben.
Delphi-Quellcode:
In Delphi: Meuü: Datei->Neu->Anewndung (Delphi3 -> Datei->Neue Anwendung)
procedure TForm1.FormCreate(Sender: TObject);
var F: file; IoError: Integer; begin {$I-} System.AssignFile(F, '?invalid?'); System.Reset(F); IoError := System.IOResult; {$I+} ShowMessage('Fehlernummer: ' + IntToStr(IoError)); end; DoppelClick auf Form1 -> FormCreate-Methode wird erzeugt. Dort schreibst Du obigen Text rein. Nicht vergessen: var F: File; IOERror: Integer; Sonst beschwert sich der Compiler. Viel Erfolg schöni |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr. |
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 by Thomas Breitkreuz