07.12.2009, 22:50
Beitrag #1
|
|
|
07.12.2009, 23:20
Beitrag #2
|
SeBa
LVF-Guru
Beiträge: 2.025
Registriert seit: Oct 2008
09SP1 & 10 FDS
2008
DE
65xxx
Deutschland
|
Event, wenn Ordnerinhalt geändert wurde
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!
|
|
|
08.12.2009, 07:25
Beitrag #3
|
|
|
08.12.2009, 09:26
Beitrag #4
|
IchSelbst
LVF-Guru
Beiträge: 3.697
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Event, wenn Ordnerinhalt geändert wurde
' 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)
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
10.12.2009, 08:20
Beitrag #5
|
|
|
10.12.2009, 09:26
Beitrag #6
|
rasta
LVF-Gelegenheitsschreiber
Beiträge: 245
Registriert seit: Oct 2006
LabVIEW 2009-2017
2006
EN
53909
Deutschland
|
Event, wenn Ordnerinhalt geändert wurde
' 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
|
|
|
10.12.2009, 09:35
Beitrag #7
|
IchSelbst
LVF-Guru
Beiträge: 3.697
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Event, wenn Ordnerinhalt geändert wurde
' 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).
|
|
|
10.12.2009, 12:13
Beitrag #8
|
SeBa
LVF-Guru
Beiträge: 2.025
Registriert seit: Oct 2008
09SP1 & 10 FDS
2008
DE
65xxx
Deutschland
|
Event, wenn Ordnerinhalt geändert wurde
' 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!
|
|
|
10.12.2009, 12:37
Beitrag #9
|
IchSelbst
LVF-Guru
Beiträge: 3.697
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
Event, wenn Ordnerinhalt geändert wurde
' 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).
|
|
|
| |