LabVIEWForum.de
Event, wenn Ordnerinhalt geändert wurde - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Event, wenn Ordnerinhalt geändert wurde (/Thread-Event-wenn-Ordnerinhalt-geaendert-wurde)



Event, wenn Ordnerinhalt geändert wurde - IchSelbst - 07.12.2009 22:50

Wer gibt mir denn mal einen Tipp - oder ein VI?

Ich möchte einen Event (in einer Eventstruktur) bekommen, wenn der Anwender auf der lokalen Festplatte in einem bestimmten Verzeichnis einen Ordner erstellt hat.

Nach was soll ich denn suchen?


Event, wenn Ordnerinhalt geändert wurde - SeBa - 07.12.2009 23:20

IF du weißt, wo der Ordner ist kannst du ja pollen ob der Pfad gültig ist.

ELSEIF du nutzt die Windoof API Bsp. Link , auch wenns in C++ ist, so ähnlich muss es doch auch in LV möglcih sein..?!?Huh

ELSE :kA:gibts 'en FileSystemWatch4Changes.vi ?


Gruß SeBa


Event, wenn Ordnerinhalt geändert wurde - rasta - 08.12.2009 07:25

Wenn´s .net stört..
http://forums.ni.com/ni/board/message?boar...=198096#M198096

Gruß
Ralf


Event, wenn Ordnerinhalt geändert wurde - IchSelbst - 08.12.2009 09:26

' schrieb:IF du weißt, wo der Ordner ist kannst du ja pollen ob der Pfad gültig ist.
Gerade pollen wollte ich ja nicht machen.

Zitat:du nutzt die Windoof API Bsp. Link , auch wenns in C++ ist, so ähnlich muss es doch auch in LV möglcih sein..?!?Huh
Sieht zum Teil wie gepollt aus. Aber: Da sind einige Schlagwörter zum Suchen drin.

' schrieb:Wenn´s .net stört..
Stört .net (<= Hey, rasta, coole Spielererei mit der deutschen Orthographie)


Event, wenn Ordnerinhalt geändert wurde - IchSelbst - 10.12.2009 08:20

Wie man's macht, irgendwas hängt immer.

.net ist ja eigentlich ganz schön. Aber such mal aus einer Liste von was weis ich 200.000 Elementes das passende aus. Der Befehl FileSystemWatch() aus dem Link hat leider nicht sofort ausreichend funktioniert. Also hab ich's jetzt gemacht wie's am schnellsten ging: Im MausBetrittBereich-Event wird die Baustruktur neu gelesen.


Event, wenn Ordnerinhalt geändert wurde - rasta - 10.12.2009 09:26

' schrieb:Wie man's macht, irgendwas hängt immer.

.net ist ja eigentlich ganz schön. Aber such mal aus einer Liste von was weis ich 200.000 Elementes das passende aus. Der Befehl FileSystemWatch() aus dem Link hat leider nicht sofort ausreichend funktioniert. Also hab ich's jetzt gemacht wie's am schnellsten ging: Im MausBetrittBereich-Event wird die Baustruktur neu gelesen.
Hast Du das Beispiel ("File_Watcher.llb") aus dem Link ausprobiert ?

Gruß
Rlf


Event, wenn Ordnerinhalt geändert wurde - IchSelbst - 10.12.2009 09:35

' schrieb:Hast Du das Beispiel ("File_Watcher.llb") aus dem Link ausprobiert ?
Ja, dieses Beispiel.

Erstellt der Anwender im zu überwachenden Ordner oder Unterordner einen neuen Order, erfolgt ein CallBack (<= sehr schön) mit dem Wert "Neuer Ordner". Und zwar genau in dem Moment, in dem das Eingabefenster für den neuen Pfadnamen erscheint. Leider hab ich es nicht hinbekommen (auf jeden Fall nicht so schnell, wie ich das andere programmiert habe), dass auch dann ein CallBack kommt, wenn die Eingabe des neuen Namens beendet ist. Das nächste wäre dann: was tun, wenn der Anwender einen Ordner löscht?

Das Problem ist immer das selbe: Was geht schneller? Alt hergebracht zu machen oder auf das neue setzen. Was nützt es mir, wenn ich eine Stunde bei .net das entsprechende suchen muss, wenn die Lösung mit dem OnMouseEnter in 30 Sekunden geht.


Event, wenn Ordnerinhalt geändert wurde - SeBa - 10.12.2009 12:13

' schrieb:Leider hab ich es nicht hinbekommen (auf jeden Fall nicht so schnell, wie ich das andere programmiert habe), dass auch dann ein CallBack kommt, wenn die Eingabe des neuen Namens beendet ist.

Hast du mal das Ereignis-Callback von "Created" auf "Renamed" umgestellt?

* Created: Im überwachten Ordner (in Windows) eine neue Datei erzeugt. "Neues Textdokument.txt" ist dann zum Umbennenen markiert, du weißt was ich meine...
-> Ergebnis: "Neues Textdokument.txt" wird im FileWatcher angezeigt.

* Renamed: identisches Vorgehen, aber Datei wird auch umbenannt in Test.txt
-> Ergebins: "Test.txt" wird im Filewatcher angezeigt, das reine Erstellen feuert den Event nicht, wohl aber das setzen des neuen Namens.

Hab das mit zwei Instanzen des FileWatchers gemacht. Das zeigt auch was du machen kannst, wenn ein Ordner gelöscht wird...
Einfach für jeden Event (Erstellen/Umbenennen/Löschen...) einen eigenen FileWatcher als SubVI laufen lassen.


Gruß SeBa


EDIT:
PS: geschätzte Dauer für das Umprogrammieren von Created nach Renamed... 5 Sekunden.


Event, wenn Ordnerinhalt geändert wurde - IchSelbst - 10.12.2009 12:37

' schrieb:Hast du mal das Ereignis-Callback von "Created" auf "Renamed" umgestellt?
Zum Zeitpunkt des Auftretens des aktuellen Problems habe ich noch keine Kenntnis gehabt über die Eigenschaften der .net-Implementierung in LV. Daher und weil mir plötzlich das mit dem OnMouseEnter einfiel, hab ich also beschlossen, das mit dem .net vorerst nicht zu machen.

OnMouseEnter war nämlich nichts weiter als zu einem bereits bestehenden Evantcase weitere Eventquellen hinzuzufügen.

Beim CallBack hätte ich das weitere Problem gehabt, das CallBack-VI so anzupassen, dass der Event weitergeleitet wird zu dem bestehenden Eventcase. Das wäre möglicherweise gegangen alleine mit einem Value(sgl) des Filestrings.


Und wenn mein Chef mich lässt (es ist ja schließlich sein Geld, das ich verdiene) oder ich noch Lust habe, dann kann ich mir das mit dem .net ja mal genauer ankucken. Jetzt wo ich einen definierten Anwendungsfall habe.