Announcement

Collapse
No announcement yet.

File- Namen zurück geben lassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • File- Namen zurück geben lassen

    Hallo UMüller,<br>
    <br>
    wenn ich mich nicht sehr täusche, wirst Du dass wohl leider selber<br>
    verwalten müssen.<br>
    Die Verwendung von ReadDirectoryChangesW könnte Abhilfe schaffen.<br>
    Diese Funktion steht allerdings nur unter NT 4.0 und höher (W2K) zur<br>
    Verfügung, nicht unter W9x/me.<br>
    Hast Du schon mal näher im Platform SDK 'gewühlt', unter Monitoring Directories?<br>
    <br>
    Ciao<br>
    Chri

  • #2
    File- Namen zurück geben lassen

    Wie kann ich mir den Dateinamen der mit folgendem Handle (changehandle: THandle) festgestellten File- Änderung:

    changehandle:=FindFirstChangeNotification(PChar(wa tchpath),FALSE,FILE_NOTIFY_CHANGE_FILE_NAME);

    zurück geben lassen?

    Comment


    • #3
      Hallo Chris,
      Danke für Deinen ersten Tip!
      Um keine falschen Eindrücke aufkommen zu lassen, handelt es sich hier um meinen ersten "Kontakt" mit THandle. Ich arbeite jedoch schon längere Zeit mit Delphi 5, so daß ich doch nicht soo neu bin...
      Mit ...FindFirstChangeNotification... kann ich problemlos feststellen, wenn sich eine Datei je nach Option in einem Verzeichnis ändert. Also hat das Handle die betreffende Datei bereits festgestellt, die Rückgabe deren Namen muß also möglich sein. Leider habe ich bis jetzt noch keine Hilfdatei gefunden, in der ich die möglichen Objekte finde und deren Parameter verstehen kann. Hast Du hierzu einen Tipp?
      Danke schon mal!
      Uw

      Comment


      • #4
        <pre>
        Hallo Uwe,

        zuerst einmal eine kleine Korrektur.
        FindFirstChangeNotification bezieht sich nicht auf Dateien, sondern auf Verzeichnisse,
        ergo weisst Du anschliessend auch nur (bei FILE_NOTIFY_CHANGE_FILE_NAME), <b>dass</b> sich
        im Verzeichnis watchpath in irgendeiner Form etwas getan hat, das mit FILE_NOTIFY_CHANGE_FILE_NAME
        überwacht wird, aber <b>nicht bei welcher Datei</b> dass der Fall war.
        Demzufolge muss es nicht möglich sein sich den Dateinamen zurückgeben zu lassen.:-(
        Du kannst ja schliesslich auch nicht gezielt eine Datei angeben.

        Kurz zu THandle:
        Ein Handle ist nichts weiter als ein 32 Bit Integer, ganz egal ob THandle, hKey oder wie
        auch immer.
        Der in der Doku zu FindFirst... angegebene mögliche Rückgabewert INVALID_HANDLE_VALUE
        ist eine Konstante mit dem Wert $FFFFFFFF.
        Ob diese Zahl im Zusammenhang mit der gewählten Funktion passt verwaltet das System.

        Ich habe mal im aktuellen Platform SDK (Februar 2001) danach gesucht, da ich diese Funktion
        zur Zeit auch gerade verwende und gerne wüsste, um welche Datei es sich handelt, konnte
        aber leider nicht das geringste finden, ausser eben ReadDirectoryChangesW.
        Hilft zumindest mir nicht weiter, da mein Programm ab Win95 aufwärts laufen soll und sich
        der Aufwand mit betriebsystemabhängigem ablauf dabei nicht lohnt.

        Sollte ich zufällig doch über eine einfache Lösung für das Problem stossen, werde ich Dich
        gerne informieren. Ich gehe aber davon aus, das es diese Lösung schlicht nicht gibt.

        Ciao
        Chris
        </pre&gt

        Comment


        • #5
          hallo,

          @christian seehase: also ich kann dich trösten, ReadDirectoryChangesW kann zwar nur bei nt-basierten systemen verwendet werden, aber ich experimentiere nun auch schon eine zeitlang damit herum und musste feststellen, das dieses ReadDirectoryChangesW nicht zuverlässig arbeitet, es werden immer wieder events "verschluckt" bzw. an die dateinamen sonderbare zeichen angehängt wie etwa 0?, #%, 9i, 0-, etc. manchmal auch nur einstellig. also letztendlich bin ich am überlegen, ob ich darauf verzichten soll und das ganze selber verwalte (dann würe es auch unter 9x lauffähig, obwohl das bei mir nur eine untergeordnete rolle spielt). es wäre wirklich eine sehr feine sache mit ReadDirectoryChangesW, aber dazu müsste es 100% funktionieren. bin gerade noch dabei herauszufinden woran die fehler liegen und weshalb sie auftreten, glaube aber nicht mehr so recht daran mit dieser funktion weiterzukommen...

          mfg
          ak

          Comment

          Working...
          X