[gelöst] Calc: Dimensionierung und Deklaration von Array's

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

craig22
****
Beiträge: 135
Registriert: Mi, 19.08.2020 13:47

[gelöst] Calc: Dimensionierung und Deklaration von Array's

Beitrag von craig22 »

Hallo,

dies ist ein Crossposting:
https://ask.libreoffice.org/de/question ... on-arrays/
Weil ich dort keine Antwort bekomme, hoffe ich, dass mir hier jemand weiterhelfen kann.

Alle Info's und eine Musterdatei befinden sich auf LibreOffice-ASK.

Problem besteht für mich unter AOO, als auch LibO.

Gruß

Craig
Zuletzt geändert von craig22 am Do, 20.08.2020 15:58, insgesamt 1-mal geändert.
Gruß

Craig
_____________________________________________________
WIN 10 Pro 64-Bit • LO 7.1.5.2 (x64) • AOO 4.1.8
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Calc: Dimensionierung und Deklaration von Array's

Beitrag von Stephan »

Ich hatte das Thema erst vor einiger Zeit ausführlich erläuter, aber ich finde meinen eigenen Beitrag nicht wieder.

Eigentlich ist die Situation recht einfach, denn man muss lediglich verstehen das es sich um Arrays in Arrays handelt. WEnn Du bei ask.libreoffice schreibst:
Jetzt benötige ich ein kleineres Array mit einer Zeile und zwei Spalten
dann ginge das formal so:

Code: Alles auswählen

Dim meinArray(0) As Variant
Dim meinArray2(1) As Variant

meinArray2(0) = 123
meinArray2(1) = "abc"
meinArray(0) = meinArray2

'in Tabelle schreiben
ThisComponent.Sheets().GetbyIndex(0).getCellRangeByName("A1:B1").setDataArray(meinArray)

Gruß
Stephan
craig22
****
Beiträge: 135
Registriert: Mi, 19.08.2020 13:47

Re: Calc: Dimensionierung und Deklaration von Array's

Beitrag von craig22 »

Hallo Stephan,

vielen, vielen Dank.
Stephan hat geschrieben:Ich hatte das Thema erst vor einiger Zeit ausführlich erläuter, aber ich finde meinen eigenen Beitrag nicht wieder.
Ich war mir auch sicher, dass ich etwas darüber gelesen habe und fand es nicht wieder.
Weder in den Handbüchern, noch in den Foren.
Habe auch nach Arrays von Arrays gesucht.

Naja, Deine Lösung funktioniert jedenfalls.

Was ich noch nicht verstanden habe ist:
Wenn ich "Arrays von Arrays" aus einem Sheet per getDataArray bilde, dann wird mir im Beobachter der Datentyp "Object(...)" angezeigt.
In Deinem Code hast Du "Variant" verwendet.

Habe Deinen Code auch mal mit "Object(...)" getestet.
Funktioniert beides tadellos, aber warum ist "Arrays von Arrays" ein Object?
Ein Geheimnis der Entwickler?
Gruß

Craig
_____________________________________________________
WIN 10 Pro 64-Bit • LO 7.1.5.2 (x64) • AOO 4.1.8
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Calc: Dimensionierung und Deklaration von Array's

Beitrag von Stephan »

Wenn ich "Arrays von Arrays" aus einem Sheet per getDataArray bilde, dann wird mir im Beobachter der Datentyp "Object(...)" angezeigt.
Kann ich eigentlich nichts dazu sagen, ich arbeite nicht mit dem Beobachter.
In Deinem Code hast Du "Variant" verwendet.

Habe Deinen Code auch mal mit "Object(...)" getestet.
Funktioniert beides tadellos, aber warum ist "Arrays von Arrays" ein Object?
Ich habe Variant nur verwendet um zu demonstrieren das mit .setDataArray() WErte wie Texte gleichzeitig übergeben werden können und um hier wirklich explizit einen Typ anzugeben. Damit will ich nur sagen das das Variant an dieser Stelle nicht zwingend wäre(*) und ich es normalerweise wegließe.

(*)
z.B. ist die explizite Deklaration als Variant bei der NUtzung von Tabellenfunktionen in StarBasic nötig - im Zweifel gibt es dort aber Ausnahmen, was dort aber degfinitiv als Fehler zu betrachten wäre
(Ich erwähne das nur beispielhaft, sofern bei Dir die Frage aufkäme wo denn eine explizite Variant-Deklaration zwingend wäre)


Warum es mit Object geht kann ich nicht sagen, eigentlich erscheint mir das falsch. Meiner Meinung nach ist aber in jedem Fall die Erklärung 'Object WEIL Array in Array' falsch, weil die Arrays ja separat deklariert sind und nichts voneinander wissen können. Ich wüsste auch nicht wie man so etwas zusammenhängend deklarieren sollte.



Gruß
Stephan
craig22
****
Beiträge: 135
Registriert: Mi, 19.08.2020 13:47

[gelöst] Re: Calc: Dimensionierung und Deklaration von Array's

Beitrag von craig22 »

Hallo Stephan,
Kann ich eigentlich nichts dazu sagen, ich arbeite nicht mit dem Beobachter.
Auch XRAY zeigt mir das per getDataArray erzeugte Array als Object an.

Code: Alles auswählen

          Tabelle : T( 0 To 2 ) As object  
 
(0)       | Tabelle : T( 0 To 1 ) As variant 
(1)       | Tabelle : T( 0 To 1 ) As variant 
(2)       | Tabelle : T( 0 To 1 ) As variant
Dein Array per XRAY ausgelesen:

Code: Alles auswählen

          Tabelle : T( 0 To 0 ) As variant  
 
(0)       | Tabelle : T( 0 To 1 ) As variant 
Warum es mit Object geht kann ich nicht sagen, eigentlich erscheint mir das falsch. Meiner Meinung nach ist aber in jedem Fall die Erklärung 'Object WEIL Array in Array' falsch, weil die Arrays ja separat deklariert sind und nichts voneinander wissen können. Ich wüsste auch nicht wie man so etwas zusammenhängend deklarieren sollte.
Ich kann nicht beurteilen ob dieses falsch ist, zumindest sehr seltsam. Betrifft übrigens AOO und LibO.

Der Datentyp "Object" ist mir bei meinen vielfältigen erfolglosen Versuchen auf gefallen. Bei meiner Suche
habe ich bisher nirgends einen Hinweis darauf gefunden, warum hier dieser Datentyp automatisch verwendet.

Macht nichts, Hauptsache es funktioniert wie gewünscht.

Ich bin Dir sehr dankbar, dass ich endlich eine Lösung für mein Problem habe.

Gruß

Craig
Gruß

Craig
_____________________________________________________
WIN 10 Pro 64-Bit • LO 7.1.5.2 (x64) • AOO 4.1.8
Antworten