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 

"VI-Programm" funktioniert, Applikation nicht



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!

05.01.2009, 11:06
Beitrag #11

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
"VI-Programm" funktioniert, Applikation nicht
' schrieb:Woher weiß ich denn, welches VI als dynamisch eingebunden wird?
Die VIs aus excel.llb haben in meinem Programm als Speicherort z.B. C:Program FilesNational InstrumentsLabVIEW 8.2vi.libaddons_officeexcel.llbExcel Set Cell Font.vi. Woher weiß LabVIEW bei einer Apllikation jetzt wo sich dieses VI befindet, wenn ich es nicht in der "Mein Computer" Projektsturktur habe? Oder binde ich es deshlab als dynamisches VI mit ein?
Eigentlich sind das alles hier Fragen für RolfK. Ich wie wohl fast alle hier sind lediglich Anwender der LV-IDE. Unsereins, wie natürlich du auch, geht davon aus, dass so Sachen wie das Einbinden diverser Hilfsmittel automatisch und ohne Probleme funktioniert.

Zitat:Woher weiß LabVIEW bei einer Apllikation jetzt wo sich dieses VI befindet, wenn ich es nicht in der "Mein Computer" Projektsturktur habe?
In der Projektstruktur muss sich dieses eine VI schon befinden - siehe mittleres Bild. Sonst weiß der Kompiler ja nicht, dass (<= zuerstmal dass, nicht was) er was machen soll. Jetzt weiß er, dass er was machen soll. Was das nun ist geht wohl (?? indirekt) aus dem Dateinamen hervor: "Excel Dynamic VIs": Nimm das Excel-Modul, das angemeldet ist (Excel 98/2000/2003/2007 - es geht nur eines!), und binde das in die EXE-datei ein. Ob jetzt hier die komplette ActiveX-Schnittstelle intergriert wird oder nur ein Teil, der einen weiteren Teil auf dem (Ziel-)Rechner voraussetzt - das weis ich nicht.
Eigentlich sind sogar beide Verfahren kritisch: Immerhin muss die eingebundene Schnittstelle, wie klein sie auch sein mag, mit der Excel-Version des Zielrechners kompatibel sein.

Zitat:Durch diverse Updates im vergangenen Jahr veränderte sich Excel. Aber wieso macht das den Applikationen von vor einem Jahr nichts aus und nur meine funktionieren nicht?
Auf dem Rechner mit der LV-IDE oder auf dem Zielrechner mit der EXE?

Zitat:Oder ist der Zugriff auf Excel vlt. nicht rückwärts kompatibel?
Ja, richtig.
[*grübel*]
Warum ist mir das nicht so einfach zu sagen eingefallen Lol


Zwei Ratschläge kann ich noch geben:
Hast du mal deinen LV/NI-Ansprechpartner gefragt, was der dazu meint sagt?
Ist es möglich, LV auf 8.2.1 upzudaten?

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
09.01.2009, 11:17 (Dieser Beitrag wurde zuletzt bearbeitet: 09.01.2009 11:21 von rolfk.)
Beitrag #12

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
"VI-Programm" funktioniert, Applikation nicht
' schrieb:Hallo IchSelbst,

vielen Dank für deine Anleitung. Ich habe es gleich mal ausprobiert. Mal wieder ohne Erfolg. Woher weiß ich denn, welches VI als dynamisch eingebunden wird?
Die VIs aus excel.llb haben in meinem Programm als Speicherort z.B. C:Program FilesNational InstrumentsLabVIEW 8.2vi.libaddons_officeexcel.llbExcel Set Cell Font.vi. Woher weiß LabVIEW bei einer Apllikation jetzt wo sich dieses VI befindet, wenn ich es nicht in der "Mein Computer" Projektsturktur habe? Oder binde ich es deshlab als dynamisches VI mit ein?

Aber das mit den unterschiedlichen Excel-Versionen ist mir ein Rätsel. Vor ungefähr einem Jahr hat mein Vorgänger Applikationen/Setups von den beiden (nicht Mobility_Sequencer_Zugstatus) erstellt und diese Programme funktionieren einwandfrei bis heute. Jetzt habe ich die beiden Programme optimiert (Excel-Auslesevorgang wurde nicht verändert!) und meine Applikationen/Setups funktionieren nicht.
Durch diverse Updates im vergangenen Jahr veränderte sich Excel. Aber wieso macht das den Applikationen von vor einem Jahr nichts aus und nur meine funktionieren nicht?
Oder ist der Zugriff auf Excel vlt. nicht rückwärts kompatibel? Also wenn ich die Applikation mit der neusten Excel-Version 2003 mache, funktionieren die Applikationen mit einer niedrigeren Excel-Version nicht (nur so ein Gedanke).
Viele Grüße

Sven

Also ist schon eine ganze Weile her dass ich mich mit dem Report Generation Toolkit abgegeben habe. Aber die Office Applikationen haben die leidige Eigenschaft, dass sich deren ActiveX Interface mit jeder neuen Version mehr oder weniger verändert und die Art wie LabVIEW die Bindings mit einer ActiveX Library macht ist so dass ein Teil der Typkonversionen zur Compilierzeit vorgenommen wird, das heisst im Moment wo Du die Applikation baust. Wenn Du das Glück hast nur ActiveX Methoden zu verwenen die zwischen den Office Versionen keine Veränderungen untergangen sind, funktioniert die Applikation, ansonsten gibt halt das Laden des VIs wo die veränderte Methode angesprochen wird einen Fehler. Im LabVIEW Entwickelsystem wird dies als Broken Arrow in der VI Hierarchy sichtbar. In einer Built Applikation ist die Applikation nicht ausführbar.

Um das Letzte zu vermeiden haben die Entwickler des Report Generation Toolkits einen Trick verwendet. Manche der VIs die Du in Deiner Applikation einbaust sprechen die ActiveX Methoden nicht direkt an sondern rufen mittels dynamischer VI Server Aufrufe ein anderes VI in der von Dir vermeldeten _excelsup.llb auf.

Dieses Wrapper VI versucht das entsprechende _excelsub.llb VI zu laden und wenn das gelingt wird es ausgeführt. Ansonsten ist es halt Pech gewesen.

Das hat als Folge dass die Applikation noch immer ausführbar ist auch wenn die Excel Version auf dem aktuellen Computer inkompatibel damit ist wie einige der Excel ActiveX Methoden in der aktuellen Applikation compiliert sind. Sobald eine solche Methode aufgerufen wird, die nicht kompatibel ist mit dem aktuel installierten Office ActiveX Interface, wird das Laden des dynamischen VIs zwar einen Fehler verursachen (der von diesem VI im Error Cluster auch weitergegeben wird) und der Aufruf der Funktion geht in die Hosen, aber der Rest der Applikation kann normal weiterlaufen.

Ich glaube dass in 8.6 das Report Generation Toolkit etwas überarbeitet wurde aber das Prinzip sollte wohl noch dasselbe sein. In früheren Versionen hatte man auf der Installations CD verschiedene Versionen dieser _excelsup.llb und _wordsup.llb libraries für die verschiedenen Office Versionen. Solange man im LabVIEW Entwickelsystem ist kann man auch selber eine Version dieser LLB für das aktuell installierte Office machen indem man das VI _excelsup.llb/_Excel Dynamic VIs.vi lädt und während man die Ctrl-Shift-Taste gedrückt hält auf den Run Arrow klickt, was alle VIs im Speicher herkompiliert und allfällige Inkompatibilitäten auflösen sollte.

Einbinden der _excelsup.llb VIs in eine Applikation geschieht, indem man _excelsup.llb/_Excel Dynamic VIs.vi als dynamisches VI in in das Project einbindet. Selber habe ich dies damals vermieden indem ich einen Hack gemacht habe indem ich das New Report.vi angepasst habe. Dazu habe ich das darin verwendete Excel Find Application Directory.vi ersetzt mit einem VI das im Falle einer Built Applikation den Pfad zu einer im selben Directory als der Applikation liegenden _excelsup.llb zurückgegeben hat. Dann habe ich die richtige _excelsup.llb für die Office Version die auf dem Zielrechner nötig war auf dem Zielsystem in das Applikations Directory kopiert. Könnte natürlich auch noch so gemacht werden dass man alle Versionen der _excelsup.llb Libraries als Support Files mit verschiedenen Namen in den Applikation Installer mitnimmt und dann obengenanntes VI so anpasst um erst die Excel Version zu bestimmen und dann den Pfad zu der entsprechenen _excelsup.llb zurückzugeben.

Analoges gilt auch für die Einbindung des Word Interfaces.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Erstelle .exe funktioniert nicht auf Zielrechner Titus85 3 6.424 17.02.2020 06:32
Letzter Beitrag: Titus85
  VI funktioniert, .exe nicht kbachler 2 8.139 26.04.2018 09:29
Letzter Beitrag: GerdW
  exe funktioniert auf anderem Pc ohne labview nicht error -1073807195 sonne2107 15 15.830 26.05.2014 09:23
Letzter Beitrag: sonne2107
  .exe -> Bluetooth (VISA) funktioniert nicht Samy1 3 5.767 25.04.2014 12:58
Letzter Beitrag: GerdW
  EXE funktioniert nicht Lotti 8 8.882 05.09.2013 07:48
Letzter Beitrag: Lotti
  buildete EXE funktioniert nicht, funktioniert dinamic dispatching in EXE überhaupt? robert_bors 9 8.943 04.02.2013 16:01
Letzter Beitrag: robert_bors

Gehe zu: