Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
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?
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
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
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
.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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
.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 ?
' 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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
' 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.
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
' 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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).