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?
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..?!?
ELSE :kA:gibts 'en FileSystemWatch4Changes.vi ?
Gruß SeBa
' 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..?!?
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)
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.
' 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
' 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.
' 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.
' 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.