FileOpen Rückgabewert

  • Wie sieht das denn aus mit dem Handle als Rückgabewert von FileOpen? In der Hilfe steht:

    Rückgabewert

    Erfolg: Ein Handle auf die Datei, das für die folgenden Funktionen benötigt wird.
    Fehler: -1, wenn ein Fehler aufgetaucht ist.


    -1 bei einem Fehler konnte ich bestätigen. Aber bei Erfolg konnte ich nur den Rückgabewert 1 ermitteln. Das scheint mir jedoch kein Handle zu sein, oder doch?. Mache ich da einen Fehler?


    Zum Nachvollziehen z. B. einfach die beiden Beispiele der Hilfe öffnen, einen Debug-Line auf "$hFileOpen" setzen und das Script ausführen.


    Bernd.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Ein handle ist - wie z.B. ein Objekt auch - kein direkt darstellbarer Wert.
    Verwende mal VarGetType auf den handle um den Variablentyp anzeigen zu lassen.

  • Hat sich erledigt.


    Die "1" scheint tatsächlich ein Handle zu sein. Die Handles sehen halt anders aus, als bei Win-Handles. Ich habe ein Beispiel erstellt, in dem 2 Dateien gleichzeitig geöffnet werden und die erste bekommt als Handle die "1", die zweite die "2".


    water


    Du warst zu schnell. ;)

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • MsgBox(0, "", "VarGetType: " & VarGetType($hFileOpen))

    Ergebnis: VarGetType: Int32


    Vielleicht sind diese (oder alle?) Handles wie laufende Nummern!? Das kenne ich z. B. von API-Timern.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Eigentlich egal, was handle für ein Wert ist. -1 heißt, dass FileOpen nicht funktioniert hat, alles andere heißt, dass FileOpen funktioniert hat und Du weiterarbeiten kannst.

  • Nicht ganz. Für mich war es wichtig, das richtige Handle für FileClose zu haben. Derzeit arbeite ich an einem Script zum Prüfen von Dateiversionen. Falls da ein Fehler vorgelegen hätte, wäre FileClose fehlgeschlagen und hätte etwa 10 Datei-Öffnungen betroffen pro Aufruf. Aber so wie es aussieht, ist das Filehandle "1" wohl richtig.


    Danke für deine Hinweise. Insbesondere VarGetType kann ich gerade an anderer Stelle gebrauchen. :thumbup:


    Bernd.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

  • Ich sehe aber trotzdem keine Notwendigkeit den Wert eines handles zu prüfen.
    Die handles würde ich in einem 2D-Array speichern: Je Dateiversion eine Zeile. Zelle 1 enthält die Dateiversion, alle anderen Zellen der Zeile die dazugehörigen handles.

    Dann bist Du unabhängig vom Inhalt (denn wer weiss denn so genau, was sich MS einfallen lässt? Bei einer Änderung crasht vielleicht das Skript und da wünsche ich dann viel Vergnügen beim Debuggen ;) )

  • Autoit liefert in den meisten Fällen nur so genannte Pseudo-Handles, die eigentlich nur Open-Counts sind. Die bekommst du z. B. auch bei OpenDll. Werden mehrere Dateien/Dlls geöffnet, erhöht sich der Counter jeweils um 1.

  • water Gute Idee. Danke! :)


    Vielleicht sind diese (oder alle?) Handles wie laufende Nummern!?

    Pseudo-Handles, die eigentlich nur Open-Counts sind. ... Werden mehrere Dateien/Dlls geöffnet, erhöht sich der Counter jeweils um 1.

    Danke für die Bestätigung! Es ist beruhigend, wenn man weiß 8o denkt, dass man etwas verstanden hat.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.