CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Paarweise Transponieren. Wie macht ihr das?

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

Moderator: Moderatoren

Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Paarweise Transponieren. Wie macht ihr das?

Beitrag von balu »

Hallo an euch alle.

Folgendes vorweg.
Es geht hier NUR um das genannte Transponieren.
Also nicht um das verteilen von mehreren Spalten auf x-Zeilen (1, oder 2) oder ähnliches PUNKT. Das sind hier die Hausregeln. ;-)


Zu dem Thema habe ich eine Lösung, die auch funktioniert, dazu komme ich noch.
Eins sei aber schon mal dazu gesagt.
Die Lösung ist NUR für 2 Spalten geeignet.


Ich möchte wissen:
  • Wie ihr das Thema angeht?
  • Wie ihr auf die Lösung gekommen seid?
  • Welche Informationsquellen dabei euch zur Verfügung standen (Bücher, PDFs, Forum …)?
  • Oder ob ihr “abgekupfert“ habt ;-) ?
Wenn ihr eure Methode zeigt, dann aber mit Erklärung was der Makro-Code macht.


Ich hatte natürlich hier auch gesucht, aber leider keine geeignete Beiträge gefunden.

Das einzige System was ich fand, hatte etwas mit DISPATCH zu tun. Nix gegen ihn generell, aber da gibt es für mich zu viele Parameter die ICH nicht verstehe.
Auch die deutsche Übersetzung vom Andrew Pitonyak war mir keine Hilfe.

Dabei war mein Wunsch doch eigentlich recht “einfach“.

“Eine Zeile auf zwei Spalten verteilen.“

Okay, eine extra bedingung kam noch dazu.

“Das muss Paarweise geschehen.“

Soll heisen (einfach dargestellt).
Aus
s1, s2, s3, s4, s5, s6
Wird
s1 – s2
s3 – s4
s5 – s6

Da ich mir mit getDataArray(0)(0) die Zeile einlese, müsste ich dann doch nur noch das Array irgendwie im Arbeitspeicher transponieren.
Aber genau das “irgendwie“ machte mir kopfzerbrechen.

Meine fehlversuche waren zahlreich. Bis ich mir eine ganz andere Strategie überlegte.

Dazu schaute ich mir mit XRAY das 2 spaltige Array noch mal anders an (hatte ich von Hand angelegt). Der Inhalt des Array war ersrmal unwichtig.
Wichtiger war die Array-Adressierung. Und die sah wie folgt aus.

(0,0)
(0,1)
(1,0)
(1,1)
(2,0)
(2,1)

Die Zahl vor dem Komma ist die Array Zeile.
Die Zahl nach dem Komma ist die Array Spalte.

Und nun schaute ich mir den Array Inhalt zusätzlich mit an, und das sah dann insgesammt so aus (einfach dargestellt, und der Array Inhalt steht in Gänsefüßchen).

(0,0) string : “s1“
(0,1) string : “s2“
(1,0) string : “s3“
(1,1) string : “s4“
(2,0) string : “s5“
(2,1) string : “s6“

Jetzt zeichnete sich so langsam ein Bild vor meinem geistigen Auge ab. Aber da fehlt noch einiges, wie z.B. die eingelesene Zeile. Denn auch sie ist ein Array.
Also her mit XRAY!
Und was zeigt es mir?
Auch wieder vereinfacht …

(0) string : “s1“
(1) string : “s2“
(2) string : “s3“
(3) string : “s4“
(4) string : “s5“
(5) string : “s6“
-
Hier ist nur ein Wert in der Klammerung. Warum und wieso das so ist, ist ein Thema für sich. Das lassen wir mal beiseite.
Aber kurz gesagt:
Die Zahl in der Klammerung ist die Spaltennummer der eingelesenen Zeile.

Und nun kommt ein kleiner “Kunstgriff“ von mir. Ich stelle beide Arrays nebeneinander.

(0,0) - (0)
(0,1) - (1)
(1,0) - (2)
(1,1) - (3)
(2,0) - (4)
(2,1) - (5)

Was mir auf fiel ist folgendes.
Wenn die 0 neben dem Komma steht, handelt es sich in der einfachen Klammerung um eine Gerade Zahl, bei der 1 ist sie Ungerade. Und das ist sehr hilfreich zu wissen. Denn dadurch lässt sich eine “Wahrheitsliste“ erstellen.

Bevor ich zur Lösung komme, wird es Zeit ein paar “Sprechende Variablennamen“ zu vergeben. Das hilft den Makro-Code besser zu verstehen.

Da die in Calc eingelesene Zeile ein Array ist und sie die Quelle darstellt, nenne ich sie einfach:
  • aQuellAri
Mein Wunsch ist ja ein neu erstelltes Array an ein bestimmtes Ziel auszugeben, nenne ich es einfach:
  • aZielAri
Das folgende dürfte für sich sprechen.
  • zz = ZielZeile im aZielAri
  • zs = ZielSpalte im aZielAri
  • qs = QuellSpalte im aQuellAri
Ich hatte ja vorhin die beiden Arrays nebeneinander gestellt.

(0,0) – (0)

So ähnlich sieht das auch im Makro-Code aus.

Code: Alles auswählen

aZielAri(zz,zs) = aQuellAri(qs)(0)
Es dürfte jetzt eigentlich gut zu verstehen sein was die Kürzel (Variablennamen) bedeuten.

Kommen wir nun zur eigentlichen Transponierungs Routine.

Code: Alles auswählen

'__ Transponieren anfang

zz = 0 : zs = 0 : qs = 0

	For b = 0 to 13
	aZielAri(zz,zs) = aQuellAri(qs)(0)
		IF zs = 0 then
			zz = zz : zs = zs +1
		else
			zz = zz +1 : zs = 0
		end IF
	qs = qs +1
	next b

'__ Transponieren ende
Wie ich ja schon zeigte, fangen die Arrays jeweils mit 0 an. Also wird auch die Routine mit 0 für alle Kürzel gestartet.

Nachdem die FOR-Schleife ihren ersten Schritt gemacht hat, überprüft die IF-Abfrage welchen Wert zs hat. Ist er 0, dann bleibt zz wie er ist und zs wird um 1 erhöht. Hat zs aber den Wert 1, dann wird zz um 1 erhöht und zs bleibt so.

Egal wie die IF-Abfrage ausfällt, qs wird immer um 1 erhöht. Und die Schleife macht ihren nächsten Schritt.

Nebeninfo.
Man kann und darf mehrere Code-Zeilen in eine Zeile durch den Doppelpunkt getrent schreiben. Es MUSS aber darauf geachtet werden das EIN Leerzeichen VOR und NACH dem Doppelpunkt steht. Ansonsten gibts arge Probleme.

Ich gehe damit sehr vorsichtig um. Aber in diesem Fall hier passt das schon.

Bäck tu Topic.

Natürlich hat das gesamte Makro einige Zeilen mehr, aber mir gings hier jetzt primär um die Transponierungs Routine.


In der Beispieldatei könnt ihr mal mein System testen.

Jetzt seid ihr an der Reihe. :-)


Es kann durchaus sein, das ich mich erst in mehreren Tagen wieder melden kann, wenn alles gut geht.



Gruß
balu
Dateianhänge
Get-Set_DataArray_Neu-Transponieren_0.ods
(16.37 KiB) 62-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Transponieren. Wie macht ihr das?

Beitrag von mikeleb »

Hallo balu,
folgendes sollte reichen

Code: Alles auswählen

Sub  weniger_Komplizierteres_Transponieren

oDok = ThisComponent
oTran = oDok.Sheets.GetByName("Transponieren")

iZa = oTran.getCellRangeByName("C13")

IF iZa.value = 0 OR iZa.value >5 then
	print "FEHLER!", "Noch mal neu eingeben."
else
	iZeile = iZa.value-1

	oEinlesen = oTran.getCellRangeByPosition(0, iZeile, 13, iZeile)
	aQuellAri = oEinlesen.getDataArray

	Dim aZielAri(6)  'Ziel ist ein eindimensionales Array für die 7 Zeilen

	'__ Transponieren anfang

	For b=0 To 6
		aZielAri(b)=Array(aQuellAri(0)(2*b),aQuellAri(0)(2*b+1)) 'jede Zeile enthält wiederum eine eindimensionales Array für die 2 Spalten
	Next
	
	'__ Transponieren ende
	
	oAusgabe = oTran.getCellRangeByName("E9:F15")
	oAusgabe.setDataArray(aZielAri())
	
	'das Löschen der Variablen ist unnötig, da sie bei einem neuen Aufruf neu initialisiert werden
	
	print "FERTIG!!! **************************"
end IF

End Sub
Gruß,
mikeleb
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Paarweise Transponieren. Wie macht ihr das?

Beitrag von balu »

Hallo mikeleb.

Man was bist Du schnell :-)
Hast recht, ist wirklich kürzer. Aber dennoch:
balu hat geschrieben: So, 11.12.2022 18:20
  • Wie ihr das Thema angeht?
  • Wie ihr auf die Lösung gekommen seid?
  • Welche Informationsquellen dabei euch zur Verfügung standen (Bücher, PDFs, Forum …)?
  • Oder ob ihr “abgekupfert“ habt ;-) ?
Ich möchte ja auch noch was dazu lernen. Und die nächste Generation wohl auch.

Trotzdem Danke schön :-)


Gehe ins Bett.
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Paarweise Transponieren. Wie macht ihr das?

Beitrag von Karolus »

Hallo
Folgendes tuts auch ab LO5.1 mit python:

Code: Alles auswählen

def tr_14_to_2x7(*_):
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.Sheets.Transponieren
    i_row = int(sheet["C13"].Value-1)
    data = sheet[i_row , :14].DataArray[0]
    sheet["E9:F15"].DataArray = tuple(zip(data[::2], data[1::2]))
Balu hat geschrieben:Es kann durchaus sein, das ich mich erst in mehreren Tagen wieder melden kann, wenn alles gut geht.
!!!Hals und Beinbruch, was auch immer du vor dir hast!!!
Gruß Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Paarweise Transponieren. Wie macht ihr das?

Beitrag von Karolus »

In Basic ist folgende Variante auch ganz nett:

Code: Alles auswählen

…
   source = oTran.getCellRangeByPosition(0, iZeile, 13, iZeile)
   data = source.getDataArray()(0)
   Dim out(6,1) 
   for i = 0 to 13
      out(i\2, i mod 2 ) = data(i)
   next

   oAusgabe = oTran.getCellRangeByName("E9:F15")
   oAusgabe.setDataArray(out)
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Paarweise Transponieren. Wie macht ihr das?

Beitrag von mikeleb »

Hallo balu,

die Frage, wie man darauf kommt, ist gar nicht so einfach zu beantworten.
Es sind ja mehrere Überlegungen:
1. Wie kann ich (effektiv) Daten aus einem Zellbereich auslesen bzw. schreiben? Hier bieten sich die Methoden .getDataArray() und .setDataArray() an. Gefunden habe ich diese beim Studieren von Thomas Krumbein "Makros in OpenOffice.org 3 - Basic/StarBasic" (ISBN 978-3-8362-1438-4).
2. Wie bringe ich ein Array in eine andere Form?
Diese Frage ist eng mit der ersten verbunden, da man zunächst verstehen muss (und das hat bei mir, wenn ich mich richtig entsinne, eine Weile gedauert) wie die beiden genannten Methoden arbeiten, denn ...
Bsp.:

Code: Alles auswählen

quelle=ThisComponent.Sheets(0).getCellRangeByName("A1:F2").getDataArray()
liefert nicht wie man zunächst denken könnte ein zweidimensionales Array von 2 Zeilen und 6 Spalten, sondern ein eindimensionales Array von zwei Zeilen. Jedes Element dieses Arrays (also die beidne Zeilen) stellen wiederum ein eindimensionales Array der 6 Spalten dar.
Der Zugriff auf diese Elemente erfolgt z. B. per
quelle(0) ... die erste Zeile
quelle(0)(1) ... die zweite Spalte der ersten Zeile
In deinem Problem geht nur um einen einzeiligen Bereich. Daher ist Karolus' Zeile

Code: Alles auswählen

data = source.getDataArray()(0)
clever, weil es gleich das Array mit den Spaltenelementen aus dem einzeiligen Gesamtarray "herauslöst" und dadurch den Zugriff auf die Einzelelemente verkürzt.
Die nun vorhandenen 14 Elemente müssen nun für die Methode .setDataArray() so umgebaut werden, dass sie in einen Bereich mit 7 Zeilen und 2 Spalten geschrieben werden können.
Bis vor kurzem hätte ich gesagt, dass man nun ein eindimensionales Array von 7 Zeilen bauen muss, dessen einzelne Elemente jeweils ein eindimensionales Array der 2 Spalten darstellen. So auch meine Lösung:

Code: Alles auswählen

For b=0 To 6
		aZielAri(b)=Array(aQuellAri(0)(2*b),aQuellAri(0)(2*b+1))
	Next
sprich: Mache folgendes: Packe das 0., 2., 4., 6., 8., 10., 12. Elemente der Quelle (also das 2*b-te) zusammen mit dem nachfolgenden in ein Array und schreibe es in das Array aZielAri in der Zeile 0, 2, 4, 6, 8, 10 bzw. 12 (also b!) -> kapsele es also in eine Schleife für b von 0 bis 6.
"Bis vor kurzem" weil ich erstaunt festgestellt habe (ich weiß allerdings nicht mehr wo und wie), dass die Methode .setDataArray() auch eine zweidimensionales Array (hier 7x2) akzeptiert, wie es Karolus verwendet (er möge mir verzeihen, dass ich mich erdreiste seinen Code gleich mit zu erläutern :) ),

Code: Alles auswählen

Dim out(6,1) 
Die 14 Elemente dorthinein zu platzieren ist nun ein (etwas mathematisches) Spiel mit den Indizes. i\2 ist die ganzzahlige Division durch 2 und damit für die ersten beiden Elemente die 0, für die nächsten beiden die 1 etc. (also immer die richtige Zeilennummer) und i mod 2 immer den Rest bei Division durch 2, also 0, 1, 0, 1 etc. (immer die richtige Spalte).
Ich hoffe, es war trotz der ausholenden Beschreibung halbwegs verständlich und hilfreich.
Möge bei dir, balu, und allen anderen ebenso, alles gut gehen!
Gruß,
mikeleb
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Paarweise Transponieren. Wie macht ihr das?

Beitrag von balu »

Hallo ihr beiden :-)

Erstmal etwas "Off-Topiks". Na ja, zumindest halb O-T.

Habe mir gestern zum testen in der "Oracle VM VirtualBox" folgendes installiert:

==> Linux Mint 19.2 Cinnamon (32bit) <===

Da ist serienmäßig LO, ich meine irgendetwas mit 6.0.4.??, on Board.

Und warum erwähne ich das hier?
Nun, ich hattte letzte Woche das noch gesehen, das Karolus typisch *fett-grins* er "The Snake" präsentierte. Eigentlich wollte ich das ja nicht, aber da ich keine Einschränkung bezüglich der Programmiersprache gemacht hatte, wollte ich auch nachträglich keinen Rückzieher mehr machen. Und so habe ich jetzt auch für LO eine zusätzliche Test Plattform.

@Karolus
Na sieh mal einer an!
Nicht nur das Du auch noch eine Basic variante zeigst, sondern für mich ein nicht unbekannten Mitspieler rein bringst. Die Rede ist von:

MOD

Für die Unwissenden nach uns.
MOD ist die BASIC eigene Funktion (anders ausgedrücktt: Operator), die es auch in CALC unter den Namen =REST() gibt.

Natürlich ist die Schreibweise, oder besser gesagt die Parameterübrgabe ein klein wenig gewöhnungsbedürftig. Aber wer in CALC mit =REST() experimentiert, und sich dies Beispiel anschaut, dürfte recht schnell damit zu recht kommen.
Das ich in vorhergehenden Versuchen auch damit erfolgreich gearbeitet hatte, lasen wir mal unbetrachtet.
Karolus hat geschrieben: Mo, 12.12.2022 14:40 ... auch ganz nett:
Volle Zustimmung :-)
Wirklich Wahr.


@mikeleb
Kannst Du nicht Lesen *lol*?
balu hat geschrieben: So, 11.12.2022 18:20 Hier ist nur ein Wert in der Klammerung. Warum und wieso das so ist, ist ein Thema für sich. Das lassen wir mal beiseite.
Spaß beiseite.
Was ich persönlich ausklammern wollte, hast Du ja ganz geschickt zum Thema gemacht. Damit meine ich:

=Array(... ,...)

Das vermaledeite "Array in Array" ist bei mir noch immer ein gewisser Dorn im Auge. Auch wenn in der deutschen Übersetzung vom Andrew Pitonyak das spezielle Thema behandelt wird, so ist es keine all zu leichte Kost. FÜR MICH kommt/kam noch hinzu, das dort irgendwo Sinngemäß folgendes steht:

"Bei der Arbeit mit Arrays ist es vorteilhaft, das das Array die tatsächliche Struktur im Dokument darstellt."

Und das hat sich bei mir irgendwie Geistig festgesetzt. Jetzt kann man sich vielleicht ehern meine herangehensweise erklären. Klar! Schön, elegant, unflexibel, und einfach ist sie nicht. Aber funktionieren tut sie ja. Bei einem anderen Problem, gleiche Datei wo auch dies Transponieren vorkommt, wollt ich auch etwas mit diesem "Array in Array" ausprobieren, kam aber auf keinen Grünen Zweig. Da ich aber das dortige Problem anders gelöst habe, ist das jetzt auch nicht so wichtig.

mikeleb hat geschrieben: Mo, 12.12.2022 20:45 "Bis vor kurzem" weil ich erstaunt festgestellt habe (ich weiß allerdings nicht mehr wo und wie), dass die Methode .setDataArray() auch eine zweidimensionales Array (hier 7x2) akzeptiert, wie es Karolus verwendet
Eigentlich gehts hier um 2 x 7. *auge-zwinker-zwinker*

Ich will nicht den Ober-Schlaumeier spielen, also bitte nicht falsch verstehen oder böse sein.

Es gibt wohl eindimensionale Arrays a-la:

Code: Alles auswählen

Dim einDimAri(2)
	einDimAri(0) ="text1"
	einDimAri(1) ="text2"
	einDimAri(2) ="text3"
Das könnte man beispielsweise IM Makro für irgendetwas verwenden. Aber in CALC geht das nicht, da es eindimensional ist. In CALC gibt es aber grundsätzlich Zwei Dimensionen:
Spalte mal Zeile.

ACHTUNG! PSEUDO CODE.

Code: Alles auswählen

Dim einDimAri(2) 
		einDimAri(0) ="text1"
		einDimAri(1) ="text2"
		einDimAri(2) ="text3"
   oAusgabe = oTran.getCellRangeByName("A1:A3")
   oAusgabe.setDataArray(einDimAri)
Es wird IM Makro ein eindimensionales Array erstellt, aber für CALC wird es auf Zwei Dimensionen umgewandelt:
"A1:A3"
Spalte A
Zeilen 1 bis 3

@mikeleb, Du hast zumindest mir das mit dem "Array in Array" ein Stück weit näher gebracht. Auch das mit deiner Erklärung fand ICH in Ordnung und gelungen.

@Karolus, auch wenn Du kurz und bündig deine beiden Codes hier zeigteest, so sind sie doch hilfreich. Wann ich die Zeit für "The Snake" habe, weiss ich noch nicht. Aber der "auch ganz nett:" ist echt klasse.

Ich bedanke mich von Herzen für eure Hilfe, Mitarbeit und Wünsche. Danke schön. *beide-daumen-hoch*

Thema bleibt offen, falls noch andere "sprachen" gezeigt werden. Aber nur mit den Office (AOO & LO) eigenen.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Paarweise Transponieren. Wie macht ihr das?

Beitrag von mikeleb »

Hallo balu,
Eigentlich gehts hier um 2 x 7
Es geht um einen Bereich von 2 Spalten und 7 Zeilen. Das folgende nur der Vollständigkeit halber (nicht als Belehrung misszuverstehen :) )
Im Zusammenhang mit getDataArray/setDataArray muss beachtet werden, dass (im Gegensatz zur Adressierung) die Arrays zunächst die Zeile und dann die Spalte "ansprechen". Deshalb sprach ich von 7x2.
Vereinfachtes Beispiel für den Bereich A1:B3:
.getDataArray liefert ein Array (nennen wir es aQuelle), das folgendermaßen aufgebaut ist:
((A1,B1),(A2,B2),(A3,B3))
Angesprochen werden sie
aQuelle(0) liefert (A1,B1), um an die Einzelelemente zu gelangen: aQuelle(0)(0) liefert A1 und aQuelle(0)(1) liefert B1
aQuelle(1) liefert (A2,B2)
aQuelle(2) liefert (A3,B3)
aQuelle ist also ein eindimensionales Array (den Zeilen entsprechend), in dem jedes Element wiederum ein eindimensionales Array ist (den Spalten entsprechend)
Insofern ist es schon ein Abbild einer Calc-Tabelle.
Den Bereich A1:B3 kann ich natürlich auch als einen zweidimensionalen Bereich (mathematisch eine Matrix) ansehen:
A1 B1
A2 B2
A3 B3
Ein solches Array, nennen wir es aZiel, würde als zweidimensionales Array per
aZiel=DimArray(6,2)
deklariert werden.
Die einzelnen Elemente würden so angesprochen werden
aZiel(0,0) ->A1
aZiel(0,1) ->B1
aZiel(1,0) ->A2
etc.
Man beachte den kleinen, aber feinen Unterschied zwischen aQuelle(0)(0) und aZiel(0,0).
.getDataArray liefert stets ein ineinander geschachteltes Array, .setDataArray akzeptiert sowohl ein ineinandergeschachteltres Array als auch ein zweidimensionales Array!
Apropos Dimensionen:
DimArray(2,3,4) deklariert ein Array mit 3x4x5 Elementen (geometrisch vergleichbar mit einem Quader)
DimArray(2,3,0) deklariert ein Array mit 3x4x1 Elementen, was gleichwertig zu DimArray(2,3) wäre (geometrisch vergleichbar mit einem Rechteck, der Seitenfläche eines Quaders)
DimArray(2,0,0) deklariert ein Array mit 3x1x1 Elementen, was gleichwertig zu DimArray(2) wäre (geometrisch vergleichbar mit einer Strecke, der Seite eines Rechtecks, der Kante eines Quaders)

Eine schöne besinnliche Zeit wünscht
mikeleb
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Paarweise Transponieren. Wie macht ihr das?

Beitrag von Karolus »

Hallo

Apropos dim out(6, 1)
Ich weiss zwar das es dieses »echte« 2D-array gibt, war mir aber bis jetzt weder bewusst daß ich damit ein solches dimensioniere :shock: noch darüber, das die Api beide Formen als Rückgabe akzeptiert.
Vermutlich habe ich nur irgendwann versehentlich die kürzere Schreibweise benutzt, und die dann dauerhaft übernommen.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: CALC: Eine Zeile mit 14 Zellen auf 2 Spalten mit 7 Zeilen Paarweise Transponieren. Wie macht ihr das?

Beitrag von balu »

Hallo.

@mikeleb
Sei dir eines gewiss:
Ich verste dich nicht falsch *freundlich-lächelnd*.
Es ist auch schön von dir, das Du meine Variablennamen sinngemäß übernommen hast.
Meiner Meinung nach hast Du mal wieder gute Arbeit geleistet. *fleißsternchen-bekommst*.


@Karolus
Ich bin erstaunt darüber das Du erstaunt bist. Aber das kommt wohl daher, das deine Kreativität sich auf einem höheren Level befindet als meine. ;-)



Liebe Grüße
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Antworten