Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

wespi 10. Feb 2005 16:49

Re: IOResult funktioniert nicht korrekt
 
hab's probiert -------------> funktioniert, ergibt Fehlerfenster mit Fehler 123

Nur nützt mir das recht wenig, weil Ziel meines Programms nicht das das Darstellen eines Fehlerfensterchens ist, sondern gefälligst 'n bischen mehr.

Auf jeden Fall zeigt es, dass Delphi auch ordentlich laufen kann, wenn nicht irgendwelche ???? Umstände eintreten.

Ich hab' unter BP7 schon alles mögliche programmiert, das hatte jedenfalls nie zur Folge, dass IoResult nicht mehr funktionierte.

Vielleicht hängt es mit dem Einbinden von HighResTimer (eine microsec-genaue Timerkomponente) oder mit dem Verwenden von IO.dll (erlaubt Portzugriffe unter XP) zusammen.

Dass sich aber Delphi dadurch so durcheinander bringen lässt ????!!!!!, dass IoResult nicht mehr funktioniert, macht mich nicht gerade froh.


mfg wespi

franktron 10. Feb 2005 16:59

Re: IOResult funktioniert nicht korrekt
 
Mal ne ganz doofe Frage warum fragste nicht einfach mit fileexists('fehler'.rec') ab ob die File da ist dann brauchste keine IOResult mehr.

wespi 10. Feb 2005 17:08

Re: IOResult funktioniert nicht korrekt
 
Berechtigte Frage, aber es geht ja beim Aufruf von IoResult nicht immer nur darum, ob ein file existiert, sondern um alle möglichen Dateifehler (read,write,eof......)

und wenn die funktion bei reset nicht korrekt läuft, wie soll ich mich dann in allen möglichen Situationen darauf verlassen können ?

Also das hilft auch nicht so recht weiter, trotzdem vielen Dank, dass Ihr Euch um meine Probleme schert.

mfg wespi

roderich 10. Feb 2005 17:47

Re: IOResult funktioniert nicht korrekt
 
mal ne dumme(?) Idee:
Wie man weiß, wird der Wert von IOResult nach dessen Abfrage (IOResult ist nämlich eine Funktion !) wieder auf 0 gesetzt.
Kann es sein, daß durch die Anzeige von IOResult im Watch-Fenster genau dies passiert ? Probier's mal ohne IOResult im Watch-Fenster aus !

Gruß
Roderich

wespi 10. Feb 2005 18:09

Re: IOResult funktioniert nicht korrekt
 
Danke für den Tip, hatte ich aber auch schon mal probiert und hat nichts gebracht(schon bevor ich um Hilfe gebeten habe).
Ausserdem dürfte es dann mit dem kleinen Prögrämmchen von weiter oben auch nicht funktionieren, da war's aber auch mit watchfenster ok.



mfg wespi

franktron 10. Feb 2005 18:38

Re: IOResult funktioniert nicht korrekt
 
Wird IOResult überhaupt noch supportet oder ist das nur noch aus Kompalität da.

wespi 10. Feb 2005 19:21

Re: IOResult funktioniert nicht korrekt
 
Weiss ich nicht, aber das was Borland (oder Inprise?) an "Funktionen" anbietet, sollte doch auch "funktionieren", oder?
Sonst sollten die gleich sagen -- wird aus dem Sprachumfang gestrichen !
mfg wespi

Luckie 10. Feb 2005 21:55

Re: IOResult funktioniert nicht korrekt
 
Du musst irgendwo einen Fehler in deinem Code haben. Ich habe diese Funktion schon tausende Male benutzt und es hat bisher immer geklappt. Rufst du vielleicht IOResult zwei mal auf? Dass es dann beim zweiten mal 0 ist wenn keine Aus- und Eingabeoperationen stattgefunden haben, ist ja dann klar.

Delphi-Quellcode:
function IOResult: Integer;  // in der Unit System
begin
  Result := InOutRes;
  InOutRes := 0;
end;
Und hier wird nicht der Rückgabewert der Funktion auf Null gesetzt, sondern die gloable Variable InOutRes, damit sie für den nächsten Aufrufer wieder mit null initialisiert ist.

schöni 10. Feb 2005 22:05

Re: IOResult funktioniert nicht korrekt
 
Hallo Wespi!

Dann nimm doch Exceptions.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var F: file;
begin
  try
    System.AssignFile(F, '?invalid?');
    System.Reset(F);
  except
    On EInOutError do ShowMessage('Fehlernummer: ' + IntToStr(IoError));
    //Ich glaub, es war EInOutError bei Dateifehler
  end;
end;
Schau Dir also mal die Exceptions an.

Viel Erfolg wünscht

schöni

wespi 11. Feb 2005 00:32

Re: IOResult funktioniert nicht korrekt
 
Try .. except .. end ist mir als "Pascaler" noch etwas fremd, habe aber jetzt auch das probiert.
Bei mir wird der except .. end code-teil nicht durchlaufen, obwohl definitif ein Dateifehler auftreten muss, denn es existiert ja kein file 'fehler.rec'.

Delphi-Quellcode:
1 try
2   system.assignFile(f,'fehler.rec');
3   system.reset(f);
4 except
5   Ioerror := system.ioresult;
6   showmessage(intToStr(ioerror));
7 end;
8 if (IoError = 0) then
9 begin
10  //Anweisungen
11 end;
Nach system.reset(f) springt der debugger auf Zeile 8, als gäbe es keinen Io-Fehler.

Ich gewinne immer mehr den Eindruck, dass die installierte Komponente "HighResTimer.pas" oder die verwendete "IO.DLL", die ich beide aus dem Internet habe und die beide recht hardwarenah programmiert sind, dieses seltsame Verhalten auslösen.
Vielleicht auch mein Umgang mit diesen, die Xp oder Win2000 ja in einer Form überlisten sollen, die Bill gar nicht so zulassen wollte.
Denn Zugriffe auf Ports oder die Verwendung der internen Timer ist ja eigentlich seit NT nicht mehr zulässig.

Mein Ziel ist es (oder war, wenn's nicht funktioniert) jedenfalls, mein unter DOS in BP7 geschriebenes Programm, das mithilfe einer selbstgebauten ISA-Karte und der zugehörigen Steuerkiste imstande war, die Betriebsmoment-Kennlinien und Start-Stop-Kenlinien von Schrittmotoren zu ermessen und zu dokumentieren, nach Delphi zu portieren.
Ich habe, nachdem ich im Netz diese beiden Programme (IO.DLL und HighresTimer) entdeckt habe, die Möglichkeit gesehen, ohne allzu grossen Aufwand, genau das zu verwirklichen.

Unter DOS und BP7 hat das wunderbar geklappt.

Teiber unter WinXP oder Win2000 zu programmieren ist mir zu aufwendig (vielleicht bin ich auch zu blöd dazu).

Ich werde also noch ein bischen selbst probieren, die Probleme unter Delphi zu beseitigen und bedanke mich auf's schärfste bei allen, die nicht Zeit und Mühe gescheut haben, mir zu helfen, wenn auch ohne Erfolg.

Vielleicht findet sich ja auch noch jemand, der bereits Erfahrung mit den vorgenannten Programmen hat, und diese Probleme bereits erschlagen hat.

Jedenfalls besten Dank an alle

mfg wespi

p.s. ich hätte allerdings nicht angenommen, dass Delphi sich in seine Funktionen pfuschen lässt, egal wie die verwendeten Komponenten oder DLL's programmiert sind.
Na ja unter DOS war halt alles etwas übersichtlicher und einfacher --- auch für Borland-Programmierer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:26 Uhr.
Seite 2 von 3     12 3      

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