So heißt der Pfad zum auszuführenden Vi wenn´s im Entwicklermodus läuft:
K:ADTS 405 und MPS30Sub_Ps Justierung und hoch_runterSub_Messwerte für Ps für hoch_runter mit Not-Aus Ausführung.vi
Und so heißt der Pfad zum auszuführenden Vi wenn´s als .exe läuft mit dem Screenshot von oben:
K:LabVIEW DataappSub_Messwerte für Ps für hoch_runter mit Not-Aus Ausführung.vi
Hallo,
ich glaube, du bist etwas auf den falschen Dampfer geraten.
Nochmal von Anfang:
Also, die Funktion "Current VI's Path" ([
attachment=8508]) gibt bekanntlich den Pfad inkl. VI-Namen zurück, also z.B. etwas der Art: C:Filesdir.llbVI.vi.
Baut man jetzt aus diesem VI eine exe und lässt sich mit dieser Funktion den Pfad ausgeben, lautet die Ausgabe z.B. C:App-DirApplication.exeVI.vi.
Jetzt nehmen wir mal an, in dem oben genannten VI.vi wird ein Sub-VI aufgerufen, aber mit dem Pfad C:FilesSub-Dir1Sub-Dir2Subvi.vi.
Innerhalb der Exe wird dann der Pfad aber C:App-DirApplication.exeSubvi.vi lauten.
Jetzt klar?!
MfG, Jens
' schrieb:Und noch was:
Innerhalb einer EXE gibt es keine Unterordner mehr. Soll heißen:
In der Entwicklungsumgebung kann der Pfad zu einem VI meinetwegen D:/Verzeichnis1/Verzeichnis2/Verzeichnis3/test.llb/VI1.vi lauten.
Nehmen wir an, das aufrufende VI liegt im Verzeichnis1. Solange das VI1 nicht geladen wird, musst du dir natürlich den Pfad entsprechend zusammenbauen.
Innerhalb der EXE lautet der Pfad zum VI1 dann aber: "Pfad zum Verzeichnis der EXE"/"Application.exe"/VI1.vi
Und wie RoLe gerade gesagt hat, rein dynamisch aufgerufene VI's muss man von Hand im Application-Builder dazulinken.
MfG, Jens
Solange ein VI in einem EXE eingebaut ist (also als SubVI irgendwo verwendet wird oder als dynamisches VI zum Projekt hinzugefügt wurde findet LabVIEW das VI immer innerhalb einer Applikation unabhängig ob der Pfad richtig ist. Innerhalb eines Exes geht LabVIEW nämlich folgendermassen vor wenn man versucht eine VI Referenze zu öffnen:
1) Nehme den VI Namen alleine (ohne Pfad wenn vorhanden) und suche im Speicher innerhalb der aktuellen oder spezifischen Applikationinstanz danach. (tut auch LabVIEW selber).
2) Wenn nicht gefunden, dann verwende den Namen um innerhalb der embedded LLB im Executable zu suchen.
(tut LabVIEW selber natürlich nicht also wird da dieser Schritt übersprungen).
3) Wenn immer noch nicht gefunden, verwende den ganzen Pfad und suche da.
4) Wenn jetzt noch nicht gefunden suche in allen Searchpaths die im LabVIEW Environment definiert sind. Normalerweise hat ein Executable aber keine Searchpaths, kann man aber hinzufügen indem man einen entsprechenden Eintrag im INI file des Executables hinzufügt.
5) Wenn nicht gefunden generiere einen Fehler oder frage den Benützer mit einem Filedialog nach dem VI.
Rolf Kalbermatter