AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IOResult funktioniert nicht korrekt

Ein Thema von wespi · begonnen am 10. Feb 2005 · letzter Beitrag vom 11. Feb 2005
Antwort Antwort
Seite 1 von 3  1 23      
wespi

Registriert seit: 10. Feb 2005
9 Beiträge
 
#1

IOResult funktioniert nicht korrekt

  Alt 10. Feb 2005, 12:49
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
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: IOResult funktioniert nicht korrekt

  Alt 10. Feb 2005, 13:19
Hallo wespi,

IOResult hat einen Wert <> 0 falls ein Fehler aufgetreten ist. Deshalb müsste (logischerweise) die Zuweisung so lauten: ioerror := IOResult <> 0; Ist ioerror nun true, so ist ein Fehler aufgetreten.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 3. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#3

Re: IOResult funktioniert nicht korrekt

  Alt 10. Feb 2005, 13:22
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:
  ioerror := IOResult;
  //Auswertungen dann mit:
  if ioerror <> 0 then begin
    //...
  end;
mfg
eddy
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: IOResult funktioniert nicht korrekt

  Alt 10. Feb 2005, 14:10
Zitat von wespi:
in ioerror steht jedoch nach Abarbeiten von Zeile 4 der Wert 0, statt 2.
ioerror ist laut Zeile vier vom Datentyp Boolean. Wie läßt du dir da einen Integerwert ausgeben? Der Delphi sollte im Debugger True oder False anzeigen. Wobei False gleich null ist und alles andere True entspricht. Ergo stimmt das Ergebnis, was IOResult liefert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
wespi

Registriert seit: 10. Feb 2005
9 Beiträge
 
#5

Re: IOResult funktioniert nicht korrekt

  Alt 10. Feb 2005, 14:50
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: IOResult funktioniert nicht korrekt

  Alt 10. Feb 2005, 14:52
Wird IOError denn noch mal verwendet? Lass in dir mal mit ShowMessage ausgeben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
wespi

Registriert seit: 10. Feb 2005
9 Beiträge
 
#7

Re: IOResult funktioniert nicht korrekt

  Alt 10. Feb 2005, 15:36
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:
function IOResult: Integer; // in der Unit System
begin
  Result := InOutRes;
  InOutRes := 0;
end;
also, ich begreif's nicht

mfg wespi

[edit=Luckie]Benutz bitte das nächste mal Delphi-Tags. Danke. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#8

Re: IOResult funktioniert nicht korrekt

  Alt 10. Feb 2005, 15:48
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+}
  Mit Zitat antworten Zitat
wespi

Registriert seit: 10. Feb 2005
9 Beiträge
 
#9

Re: IOResult funktioniert nicht korrekt

  Alt 10. Feb 2005, 16:05
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
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#10

Re: IOResult funktioniert nicht korrekt

  Alt 10. Feb 2005, 16:19
Hallo wespi!

Hab grad bissl gestöbert und Deinen Beitrag gefunden und ein kleines Testprogramm geschrieben.

Delphi-Quellcode:
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;
In Delphi: Meuü: Datei->Neu->Anewndung (Delphi3 -> Datei->Neue Anwendung)

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
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 02:20 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