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 

Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?



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!

28.01.2020, 09:18 (Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2020 09:24 von TpunktN.)
Beitrag #1

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 196
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?
Servus zusammen,

ich darf mal wieder alte Software auf neue Wünsche anpassen und habe diese vorher ein wenig optimiert.
Jetzt bin ich mir aber mit den Referenzen nicht sicher, wann müssen die auf bleiben und wann kann bzw. muss ich die Schließen?
Zum Beispiel die erste Referenz zur Application links oben in '1_Excel2alles_snip', die Referenz war ursprünglich direkt wieder geschlossen worden. Hat zwar funktioniert, aber ich wollte mal lernen wie es richtig oder besser gemacht werden kann.
Bisher schließe ich einfach die Referenzen ganz am Schluss, habe da aber die '#fraglich'-Kommentar bedenken, das die Referenz gar nicht geschlossen wird, wenn dann zwischendrin ein Fehler anliegt (Fehler löschen vorher und Fehler separat auswerten?)
Vom Vorgänger habe ich übernommen, die niedrigste Referenz zu schließen, wenn ich mit der Aufgabe fertig bin ('2D_in_Excel_snip' erstellt eine Value Referenz)

Meine Erkenntnis bisher, wenn mit der Referenz nichts mehr angestellt wird, kann ich diese schließen, ist das Richtig? Oder führt das zu Problemen?

Zusatzfrage, gibt es eine bessere/schönere Möglichkeit ein Cluster in ein Array zu formatieren als in '3_Clsuter2Array_snip'? Die Funktion 'Cluster to Array' funktioniert hier nicht, im Cluster sind Arrays und untershiedliche Datentypen.

MfG Timo

Anhang:
3 Bilder, die ausreichen sollten mein Referenz und Cluster problem zu veranschaulichen.
1 ZIP mit dem kompletten SubVI in lv13_img, für details.

Edit 10' später: Zwischen Screenshot und hochladen habe ich kleine Änderungen gemacht (_Worksheet.Name gibt es nicht mehr, das Tabellenblatt heißt bereits so und im Cluster2Array kam noch ein Cluster hinzu)


Angehängte Datei(en) Thumbnail(s)
           

0.0 .zip  Excelkal_Alles LV13.zip (Größe: 78,3 KB / Downloads: 152)

"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."
Johann Wolfgang von Goethe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.01.2020, 09:50
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?

Akzeptierte Lösung

Hallo,

Referenz-Reihenfolge sieht im großen und ganzen gut aus. Genauso gehört sich das bei Excel, die Referenzen in der umgekehrten Reihenfolge schließen wie sie geöffnet wurden, und am besten dann, wenn man sie nicht mehr braucht, dann vergisst man es nicht. Deine Aussage
Zitat:wenn mit der Referenz nichts mehr angestellt wird, kann ich diese schließen
stimmt aber nicht, du musst schon die Klassenhierachie beachten. Workbook erst schließen, wenn alles darunter geschlossen ist, etc.pp.

Zu deiner Error-In Frage: s. ausführliche Hilfe zu Close Reference:
Zitat:This node runs normally even if an error occurred before this node runs.

Zu deiner Cluster to Array:
Man kann sich sicher etwas programmieren, bei dem man durch alle Elemente des Clusters geht, den Datentyp auswertet und dann je nachdem entsprechend in einen String umformatiert. Ob es das Wert ist, das musst du entscheiden.

Eine wunderbare Race-Condition hast du dir beim Parsen deiner Enums erstellt. Gleichzeitiges Schreiben des Indicator und Auslesen der PropertyNode - ein einfaches FormatIntoString langt hier völlig.

Anbei ein Screenshot, der die Idee zu "Cluster to Array" veranschaulichen soll:
   

Gruß, Jens

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
28.01.2020, 10:19
Beitrag #3

MaxP Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 88
Registriert seit: Oct 2016

LV Prof. SSP
-
DE_EN


Deutschland
RE: Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?
Hallo Timo,

Tipps am Rande:
1. Bündel einfach alle Excel Referenzen in einem Cluster. Dann hast du später nicht X Referenzen, welche du durch verbinden musst, sondern nur ein Cluster. Wenn man die Namen vernünftig nach Funktion vergibt, dann ist es später auch übersichtlich was wo passiert.
2. Mit Strg + LM + Maus bewegen kann man sich super Platz im Blockdiagramm verschaffen.
3. Mit Strg + Alt + LM + Maus ziehen kann man alles etwas kompakter bekommen.

Zum Schließen der Referenzen:
Es ist zum Glück bei ActiveX und Excel nicht so tragisch, wenn mal eine Referenz offen bleibt. Deswegen mache ich die Referenzen auch erst am Ende des Programms zu. Ausnahmen sind hier die Referenzen auf die Zellen, da man diese selten mehrfach benötigt und diese auch schnell wieder geöffnet sind.

Gruß Max
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2020, 10:44
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?
(28.01.2020 10:19 )MaxP schrieb:  Zum Schließen der Referenzen:
Es ist zum Glück bei ActiveX und Excel nicht so tragisch, wenn mal eine Referenz offen bleibt. Deswegen mache ich die Referenzen auch erst am Ende des Programms zu.
Dem widerspreche ich, da müllt man sich schnell den Speicher voll !!! Alles schon selber erlebt !

Gruß, Jens

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
28.01.2020, 11:32 (Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2020 11:35 von TpunktN.)
Beitrag #5

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 196
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
RE: Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?
Danke für die schnellen Antworten.

(28.01.2020 09:50 )jg schrieb:  ...
Eine wunderbare Race-Condition hast du dir beim Parsen deiner Enums erstellt.
Uh, danke, das hätte stunden an suchen werden können, ist behoben.

Zitat:An bei ein Screenshot, der die Idee zu "Cluster to Array" veranschaulichen soll
Das muss ich mir mal genauer anschauen und bissle rumprobieren, werde ich aber wohl hier jetzt nicht verwenden.

Zitat:Tipps am Rande:
1. Bündel einfach alle Excel Referenzen in einem Cluster. Dann hast du später nicht X Referenzen, welche du durch verbinden musst, sondern nur ein Cluster. Wenn man die Namen vernünftig nach Funktion vergibt, dann ist es später auch übersichtlich was wo passiert.
Ich finde das so übersichtlich, kann mir aber auch gerade nciht so wirklich vorstellen was du damit meinst.

Zitat:Zum Schließen der Referenzen:
Es ist zum Glück bei ActiveX und Excel nicht so tragisch, wenn mal eine Referenz offen bleibt. Deswegen mache ich die Referenzen auch erst am Ende des Programms zu. Ausnahmen sind hier die Referenzen auf die Zellen, da man diese selten mehrfach benötigt und diese auch schnell wieder geöffnet sind.
Sehe ich bei mir hier auch so, es wird Excel nur 2x geöffnet und vom Benutzer dann geschlossen, aber ich will ja lernen und es richtig machen, um bei größeren Projekten keine Probleme zu haben.

Zwar habe ich jg's Antwort als Lösung markiert, da es meine Frage beantwortet, gerne lese ich mir aber mehr Tipps durch Wink

MfG Timo

"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."
Johann Wolfgang von Goethe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2020, 12:52
Beitrag #6

MaxP Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 88
Registriert seit: Oct 2016

LV Prof. SSP
-
DE_EN


Deutschland
RE: Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?
(28.01.2020 10:44 )jg schrieb:  [quote='MaxP' pid='195986' dateline='1580203146']
Zum Schließen der Referenzen:
Es ist zum Glück bei ActiveX und Excel nicht so tragisch, wenn mal eine Referenz offen bleibt. Deswegen mache ich die Referenzen auch erst am Ende des Programms zu.
@Jens:
Wenn zitieren, dann bitte komplett. Die Referenzen zum Schreiben auf die Zellen werden ja direkt nach der Nutzung geschlossen. Viele Referenzen können da also nicht hängen bleiben. (Es sei denn man arbeitet mit zig Arbeitsmappen mit zig Blättern, aber das werden wohl kaum viele machen.) Was soll da noch großartig Speicher benötigen?

@Timo:
Ich habe dir mal ein Beispiel für das Cluster angehängt. So kann man sich mit "bundel by name" oder "unbundle by name", die benötigten Referenzen holen oder weitergeben. Verringert den Verdrahtungsaufwand enorm.

Gruß Max


Angehängte Datei(en)
0.0 .zip  Excel_ActiveX_Cluster.zip (Größe: 22,33 KB / Downloads: 164)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.01.2020, 13:23
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?
(28.01.2020 12:52 )MaxP schrieb:  
(28.01.2020 10:44 )jg schrieb:  [quote='MaxP' pid='195986' dateline='1580203146']
Zum Schließen der Referenzen:
Es ist zum Glück bei ActiveX und Excel nicht so tragisch, wenn mal eine Referenz offen bleibt. Deswegen mache ich die Referenzen auch erst am Ende des Programms zu.
@Jens:
Wenn zitieren, dann bitte komplett. Die Referenzen zum Schreiben auf die Zellen werden ja direkt nach der Nutzung geschlossen. Viele Referenzen können da also nicht hängen bleiben. (Es sei denn man arbeitet mit zig Arbeitsmappen mit zig Blättern, aber das werden wohl kaum viele machen.) Was soll da noch großartig Speicher benötigen?
Bis zum ersten Prüfstandsprogramm, bei dem genau das gemacht wird, zig Arbeitsmappen werden geöffnet und gelesen, da das Programm 24/7 läuft.

Nicht etwas programmieren, vom dem man weiß, dass es prinzipiell ein Speicherleck ist - auch wenn es nur 4 Byte für eine Referenz sind.
Ich bin schon zu oft in diese Falle getappt.

Gruß, Jens

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
28.01.2020, 13:39
Beitrag #8

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 196
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
RE: Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?
(28.01.2020 12:52 )MaxP schrieb:  @Timo:
Ich habe dir mal ein Beispiel für das Cluster angehängt. So kann man sich mit "bundel by name" oder "unbundle by name", die benötigten Referenzen holen oder weitergeben. Verringert den Verdrahtungsaufwand enorm.

Gruß Max
Danke, wenn man das sauber und übersichtlich in SubVIs programmiert, sieht das sicher besser aus Wink Werde mich da gleich mal ran setzen.

(28.01.2020 09:50 )jg schrieb:  Zu deiner Cluster to Array:
Man kann sich sicher etwas programmieren, bei dem man durch alle Elemente des Clusters geht, den Datentyp auswertet und dann je nachdem entsprechend in einen String umformatiert. Ob es das Wert ist, das musst du entscheiden.
Habe ich mal ausprobiert, funktioniert soweit, ob das sinnvoll ist, muss ich dann mal schauen, vielleicht anhand des Elementnames sortieren oder so..
Aber hierzu gleich eine Frage bezüglich Referenzen, wie ist es hier mit dem Schließen? Jede Invoke- oder Property-Node, wie bei den ActiveX? Hierachisch, die niedrigste zuerst, wenn Sie nicht mehr gebraucht wird?
       
Anhang
Bilder als lv18_img snippet
VI in lv13_img konvertiert


Angehängte Datei(en)
13.0 .vi  Cluster to Name and Data_simple.vi (Größe: 35,84 KB / Downloads: 149)

"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."
Johann Wolfgang von Goethe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.01.2020, 13:56
Beitrag #9

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?
Zu dieser Frage ein Beitrag von Darren.

Kurz: Refnums von LabVIEW-Controls brauchst du nicht unbedingt schließen.

Zwecks Cluster to String-Array (den auf nichts anderes läuft das beim Schreiben zu Excel hinaus):
Da kannst du dir ganz viele Methoden ausdenken:
* Die Daten werden alphabetisch an Hand der Element-Namen sortiert
* Eine Nachschlagliste, die die Reihenfolge definiert
* Eine erweitere Nachschlagliste, die auch noch das Format von Zahlen/Datum o.ä. definiert
usw. usw. usw.

Gruß, Jens

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
28.01.2020, 14:14 (Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2020 14:15 von TpunktN.)
Beitrag #10

TpunktN Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 196
Registriert seit: Jul 2011

2021
2011
EN

70***
Deutschland
RE: Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array?
(28.01.2020 13:56 )jg schrieb:  Zu dieser Frage ein Beitrag von Darren.

Kurz: Refnums von LabVIEW-Controls brauchst du nicht unbedingt schließen.
Danke, gut zu wissen. Sonst würde es diverse VIs auch sehr aufblasen, glaube ich.

interessant finde ich auch direkt 2 Biträge später das man die (Nicht wörtlich nehmen!) gar nicht geschlossen bekommt Big Grin

"Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen."
Johann Wolfgang von Goethe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Elemente Cluster in Cluster ansprechen simcum 3 2.184 02.10.2023 10:49
Letzter Beitrag: th13
  Extrem langsamer Variablen Zugriff über Referenzen hajos118 12 3.295 01.08.2022 17:20
Letzter Beitrag: BNT
  Muss man Referenzen von controls überhaupt schließen? dimitri84 4 3.347 21.04.2022 11:57
Letzter Beitrag: dimitri84
  (Array of )Cluster direkt als Icon? NoWay 4 3.317 16.10.2019 11:16
Letzter Beitrag: Trinitatis
  Referenzen in mehreren Bibliotheken aktualisieren seuk 3 3.335 12.09.2019 09:10
Letzter Beitrag: IchSelbst
  Cluster mit Referenzen auf FP-Elemente Oli_N 8 7.822 15.02.2017 11:19
Letzter Beitrag: Oli_N

Gehe zu: