Hallo Leute, ich habe folgende Frage:
warum kommt aus dem VI ein 0x1 großes 2D Array raus? Screenshots und das VI mit Defaultvalues sind im Anhang.
Danke, eg
P.S. ich will also in diesem Fall ein 0x0 Array rauskriegen.
(VI LV 8.2)
Laut Hilfe gilt:
Zitat:Da das Array mit dieser Funktion nur in einer Dimension verringert wird, kann immer nur ein Index-Eingang verbunden werden. Wenn Sie zum Beispiel aus einem 2D-Array eine Zeile löschen möchten, verbinden Sie nur den Zeilen-Index. Um eine Spalte zu löschen, verbinden Sie nur den Spalten-Index. Wenn Länge mit einem Wert verbunden wird, können auch mehrere aufeinander folgende Teilarrays auf einmal gelöscht werden.
Da das Eingangsarray ein 2D-Array ist, muss auch das Ausgangsarray ein 2D-Array sein. Bei der Eingangsgröße von 1x1 kommt dann eben - rein rechnerisch - 0x1 heraus. Das sieht zwar komisch aus, ist aber logisch richtig: Ein 1D-Array ist ein 2D-Array, bei dem die eine Dimension Null ist.
' schrieb:Laut Hilfe gilt:
Da das Eingangsarray ein 2D-Array ist, muss auch das Ausgangsarray ein 2D-Array sein. Bei der Eingangsgröße von 1x1 kommt dann eben - rein rechnerisch - 0x1 heraus. Das sieht zwar komisch aus, ist aber logisch richtig: Ein 1D-Array ist ein 2D-Array, bei dem die eine Dimension Null ist.
Die Eingangsgröße ist aber 0x1 und nicht 1x1 (ich meine bei dem 2.ten Teil des VIs).
eg
' schrieb:Die Eingangsgröße ist aber 0x1 und nicht 1x1 (ich meine bei dem 2.ten Teil des VIs).
Aus einem 2D-Array der Größe 0x1 kann man nichts mehr löschen. Warum also sollte das Array-Bearbeitungselement irgendetwas tun? Das Array bleibt wie es ist - nämlich leer. Leerer als leer geht nicht.
' schrieb:Aus einem 2D-Array der Größe 0x1 kann man nichts mehr löschen. Warum also sollte das Array-Bearbeitungselement irgendetwas tun? Das Array bleibt wie es ist - nämlich leer. Leerer als leer geht nicht.
Ok, vielleicht verstehe ich etwas nicht, kann sein (ich habe eigentlich gedacht LEER ist 0x0), aber warum bekomme ich dann bei dem angehängten VI ein NICHTLEERES Array raus?
Ich muss leider folgendes Work Arround (siehe Screenshot) anwenden, bis mir jemand erklärt, warum sowas passiert.
eg
(VI LV 8.2)
Hallo, keine weitere Vorschläge dazu? Muss ich mit diesem Workaround arbeiten? Ist es ein Bug?
Gruß, eg
' schrieb:Ich muss leider folgendes Work Arround (siehe Screenshot) anwenden, bis mir jemand erklärt, warum sowas passiert.
Speichertechnisch gesehen ist ein Array 0x1 genauso leer wie ein Array 0x0. Die Anzahl der Elemente in einem Array ergibt sich aus der (vereinfacht gesehen) Multiplikation der Längen der einzelnen Dimensionen. 0x1 ist aber genauso Null wie 0x0.
5x3 heißt: Die zweite Dimension ist 5mal vorhanden und jedes Element dieser zweiten Dimension hat die Länge 3.
0x1 hieße demzufolge: Die zweite Dimension ist nicht vorhanden, hat aber die Länge 1 - das ist widersinnig. Was nicht vorhanden ist kann keine Länge haben. Der eigentliche Fehler liegt bereits im ersten Teil, dort wo eben 0x1 herauskommt. (Das ist aber genau in dem Falle kein Fehler mehr, wenn es genau so in der Dokumentation steht).
Um dieses "Problem" zu beheben, würde ich genau so vorgehen wie du es gemacht hast.
0x1 bedeutet für mich "0 Zeilen - 1 Spalten - Array" und ja, eine Tabelle mit 0 Zeilen sollte eigentlich leer sein oder ist auch leer.
Danke, eg
' schrieb:0x1 bedeutet für mich "0 Zeilen - 1 Spalten - Array"
Ich geb dir da völlig Recht. Das stimmt so. Und ist an sich auch logisch. Nur: Wenn ein Array physikalisch keine Zeile hat, wird es auch keine Spalte haben.
[*grübel*]
Nur:
[*erleucht*]
Wenn die Größe 0x123 besteht, kann man zu genau diesem Zeitpunkt (nämlich wenn das Array leer, also 0x0 ist) sagen, dass das Array 123 Spalten haben wird - falls denn mal mindestens eine Zeile da ist.
Mit anderen Worten: 0x1 ist doch ein Feature und kein Bug.
.... und von mir noch was zum "Klugscheißen".
Du meinst in Deiner Dokumentation bestimmt "row" und nicht "raw" und "are not needed" statt "are don't needed".
Ist aber nur ein kleiner Hinweis, nicht negativ gemeint.
Gruß Markus