INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Dieses Thema hat akzeptierte Lösungen:

The invisible VI!



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!

08.01.2017, 15:13
Beitrag #1

Novgorod Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 65
Registriert seit: Oct 2008

2016
2006
EN

0
Sonstige
Exclamation The invisible VI!
Servus,

ich habe es irgendwie geschafft, eine leere VI zu erzeugen, die von der ausführenden Labview-Instanz nicht als "VI in memory" erkannt wird Confused...
Genau genommen habe ich die VI nicht selbst erstellt, die genaue Quelle ist mir unbekannt. Mir ist nur irgendwann aufgefallen, dass diese VI weder im "VI hierarchy" Fenster noch unter den "VIs in memory" (application property node) angezeigt wird, was mir sehr merkwürdig vorkam. Die ursprüngliche VI enthielt keinen Code, der das irgendwie erklären konnte und das Entfernen von Code-Teilen hat nichts am Verhalten geändert. Das ging dann soweit, dass ich das komplette Blockdiagramm und Frontpanel gelöscht und alle "VI properties" auf Default-Werte gesetzt habe und die "blanke" VI-Datei als Kopie gespeichert habe.

Aus diesem "unsichtbaren" Template kann man sich dann ein beliebiges Programm basteln... Es verhält sich eigentlich nicht anders als jede andere VI (man kann es als subVI callen, per Referenz mit Dateipfad zugreifen und natürlich ganz normal ausführen), aber es taucht einfach nicht in der Hierarchie auf (und somit auch keine Child-Objekte). Gibt es irgendwelche flags, womit man die VI vor den "VIs in memory" verstecken kann (und das Hierarchie-Fenster baut ja vermutlich darauf auf) oder habt ihr irgendeine Erklärung dafür?

Hier sind ein paar Screenshots von einem Minimalbeispiel. Es ist ein triviales Programm, das die Uhrzeit anzeigt und es enthält den simple error handler, damit im "VI hierarchy" Fenster Child-Objekte angezeigt werden:

[Bild: attachment.php?aid=57140]
Nur "the invisible vi.vi" ist offen, das Hierarchie-Fenster ist leer.

[Bild: attachment.php?aid=57141]
Hier ist ein Vergleich mit einer "normalen" VI. Die clock.vi hat denselben Code wie die invisible, wurde aber normal über FIle -> New VI erstellt (und nur der Code reinkopiert). Zusätzlich zeigt die "Opened VIs.vi" alle "VIs in memory" mit offenem front panel - sie listet nur sich selbst und die clock.vi, aber nicht die invisible. Ebenso zeigt das Hierarchie-Fenster nur die clock.vi mit den Subroutinen sowie die "Opened VIs.vi", aber nicht die invisible.

Die invisible VI ist ca. 4kB größer als die clock.vi. Im Hexeditor sieht es so aus, als hätten die zusätzlichen 4kB der invisible VI was mit dem Icon Editor zu tun (das Icon wurde bearbeitet), währen die clock.vi ein Standard-Icon hat, das nie bearbeitet wurde. Darüber hinaus gibt es keine offensichtlichen Unterschiede, also können es wohl nur irgendwelche flags sein - hat jemand eine Idee?

Alle 3 VIs sind im Anhang (lv16_img). Die Tests wurden unter Win 10 x64 und Labview 2016 32bit gemacht. Ich habe auch versucht die invisible VI als vorherige Version zu speichern (lv14_img), aber sie zeigt dasselbe Verhalten.


Angehängte Datei(en) Thumbnail(s)
       

16.0 .vi  the invisible vi.vi (Größe: 13,7 KB / Downloads: 105)

16.0 .vi  clock.vi (Größe: 9,99 KB / Downloads: 108)

16.0 .vi  Opened VIs.vi (Größe: 10,28 KB / Downloads: 123)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.01.2017, 09:55
Beitrag #2

BNT Offline
LVF-Freak
****


Beiträge: 740
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: The invisible VI!
Sehr interessant! Was NI wohl dazu zu sagen hat?

Ich hab's auf Windows 7 SP1 und LabVIEW 2016 mit allen aktuellen Updates probiert und kann die Beobachtungen bestätigen.
Das VI wird auch dann nicht angezeigt, wenn es als SubVI in einem normalen VI aufgerufen wird.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2017, 17:36
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: The invisible VI!

Akzeptierte Lösung

Ich spekuliere, aber ich denke, ich liege mit meiner Spekulation richtig:

Du hast es offenbar geschafft, eine System-VI der LabVIEW-Entwicklungsumgebung abzuändern. Man bedenke nur, wie groß die Anzeige der "VIs in memory" tatsächlich wäre, wenn immer ALLE VIs angezeigt würden. Extrem viele Komponenten sind schließlich in LabVIEW geschrieben (wie z.B. der Icon Editor uvm.).

Beweis meiner Vermutung: Die versteckte VI-Property "IsSystemVI" zeigt bei deinem Invisible-VI als Wert TRUE, das Clock-VI dagegen FALSE. So etwas ist natürlich nicht über irgendwelche Menüs einstellbar.

Gruß, Jens


Angehängte Datei(en)
16.0 .vi  the invisible vi.vi (Größe: 15,13 KB / Downloads: 111)

16.0 .vi  clock.vi (Größe: 11,41 KB / Downloads: 107)

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.01.2017, 17:57
Beitrag #4

Novgorod Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 65
Registriert seit: Oct 2008

2016
2006
EN

0
Sonstige
RE: The invisible VI!
Ah, versteckte Properties, die in der Datei gespeichert werden Blink - darauf bin ich nicht gekommen, danke! Top1
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: