[gelöst]array global initialisieren

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

Moderator: Moderatoren

juergen_w1987
**
Beiträge: 48
Registriert: Fr, 04.02.2011 09:31

[gelöst]array global initialisieren

Beitrag von juergen_w1987 »

Hy leute,

kann man ein array auch global initialsieren? Bzw wie geht das?

Code: Alles auswählen

Global de(3)=("0",	"Baum","Haus","gehen")
Zuletzt geändert von juergen_w1987 am Di, 15.05.2012 18:46, insgesamt 1-mal geändert.
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: array global initialisieren

Beitrag von Karolus »

Hallo
Vmtl.:

Code: Alles auswählen

Global de as Variant
...
de = array("0",   "Baum","Haus","gehen")
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
juergen_w1987
**
Beiträge: 48
Registriert: Fr, 04.02.2011 09:31

Re: array global initialisieren

Beitrag von juergen_w1987 »

Code: Alles auswählen

Global de as Variant
...
de = array("0",   "Baum","Haus","gehen")
Leider nein.

Code: Alles auswählen

array(....)
ist eine funktion und die kann man nur in einer funktion(subroutine) aufrufen.
leider nicht die Lösung
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: array global initialisieren

Beitrag von Karolus »

Hallo
Ja und, dann ruf sie doch in einer solchen auf:

Code: Alles auswählen

Global de as Variant

sub de_array_bauen
     de = array("0",   "Baum","Haus","gehen")
end sub
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
juergen_w1987
**
Beiträge: 48
Registriert: Fr, 04.02.2011 09:31

Re: array global initialisieren

Beitrag von juergen_w1987 »

Ja den was anderes bleibt mir ja nicht übrig. Ich hätte nur gehofft dass es auch bei der definition der Variable auch geht. :(

somit kann man das thema als mehr oder weniger gelöst betrachten
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: array global initialisieren

Beitrag von DPunch »

Servus
juergen_w1987 hat geschrieben:Ja den was anderes bleibt mir ja nicht übrig. Ich hätte nur gehofft dass es auch bei der definition der Variable auch geht. :(
Das ist über Konstanten und dort nur bei sogenannten Simple Types möglich. Nicht bei Arrays.
howtoman
*
Beiträge: 19
Registriert: So, 29.05.2011 13:06

Re: [gelöst]array global initialisieren

Beitrag von howtoman »

Hallo,
Kann man vllt einen versteckten Calc-blat mit ranges benutzen (erstellen, einfügen, danach auslesen)? Als global Array ersatz?
Ich wollte eigentlich eine Collection global benutzen, aber wenn es sogar mit Arrays nicht geht... Gibt es vllt eine gute Lösung dafür? Also um Arrays global zu halten, bearbeiten usw..

danke.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: [gelöst]array global initialisieren

Beitrag von DPunch »

Servus
howtoman hat geschrieben:Ich wollte eigentlich eine Collection global benutzen, aber wenn es sogar mit Arrays nicht geht...
Inwiefern? Natürlich kannst Du Arrays und Collections auch global benutzen, Du kannst sie nur nicht mit Werten vorbelegen.
Aber anstatt ein Calc-Blatt auszulesen (was Du ja dann zu einem bestimmten Zeitpunkt sowieso per Makro machen müsstest), kannst Du auch einfach das Array in einer eigenen Prozedur mit den Werten befüllen, bevor Du damit arbeiten willst.
howtoman
*
Beiträge: 19
Registriert: So, 29.05.2011 13:06

Re: [gelöst]array global initialisieren

Beitrag von howtoman »

DPunch hat geschrieben:Servus
howtoman hat geschrieben:Ich wollte eigentlich eine Collection global benutzen, aber wenn es sogar mit Arrays nicht geht...
Inwiefern? Natürlich kannst Du Arrays und Collections auch global benutzen, Du kannst sie nur nicht mit Werten vorbelegen.
Aber anstatt ein Calc-Blatt auszulesen (was Du ja dann zu einem bestimmten Zeitpunkt sowieso per Makro machen müsstest), kannst Du auch einfach das Array in einer eigenen Prozedur mit den Werten befüllen, bevor Du damit arbeiten willst.

Collections(oder arrays) global brauche ich um die für mehrere Makros die zu benutzen..
Also praktisch mit einem Makro belegt, mit einem anderen, irgendwann danach, ausgelesen..
Ich habe sogar mit JSON Codierung probiert (also array in string und zuruck umwandeln, strings kann man ja global verwenden) aber leider Starbasic version von JSON habe ich nicht gefunen, nur VBA (mit classen..)
habe danach mit JavaScript module versucht, aber ein Ojbect (collection oder array ) kann ich irgendwie nicht von Basic nach JavaScript übergeben..

Koplizierte Sachen würde ich sagen.
Es muss aber irgendeine vernünftige lösung existieren ^^

ich schreibe wahrscheinlich irgendeine mini array converter.. also array -> string, und string -> array Function mit Join und Split (die arrays sind aber mehrdimensional, und man muss auf bestimmte Zeichenfolgen verzichten, wegen split/join)
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: [gelöst]array global initialisieren

Beitrag von Karolus »

Hallo
@howtoman
Dann vergiss Starbasic und schreib gleich in einer "lebenden" Scriptsprache wie Python, Javascript, ect.

Python hat bsplw. auch ein 'json'-modul zum serialisieren von Datenstrukturen, für einfachere Dinge wie Listen, Tuple's , Dictionary's reicht schon 'pickle' aus.

Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
howtoman
*
Beiträge: 19
Registriert: So, 29.05.2011 13:06

Re: [gelöst]array global initialisieren

Beitrag von howtoman »

Hallo, Karolus
naja, vergessen kann ich Starbasic nun nicht, da ich auch für Microsoft Office die Makros ständig schreibe.
Ond wegen OpenOffice nun python lernen.. oder richtig JavaScript anwenden .. wird zu schwer glaube ich (weil es schon tausende Zeilen StarBasic-Functionen programmiert wurden, die ich auch immer benutze)
Sowas sollte ich wahrscheinlich am Anfrang tun ^^ . Basic + OpenOffice war aber damals leichter zu verstehen/anwenden und es gibt auch mehr Beispiele und Dokumentation... leider ..
Zuletzt geändert von howtoman am Mo, 28.05.2012 19:12, insgesamt 1-mal geändert.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: [gelöst]array global initialisieren

Beitrag von DPunch »

Servus

Kannst Du vielleicht nochmal kurz und klar erklären, was genau Dein Ziel ist?
Ich hatte ja bereits erwähnt, dass Du selbstverständlich auch Arrays und Collections global speichern kannst (genau wie Du es mit Deinem myArrayString tust), insofern erschliesst sich mir absolut nicht, was das Ganze bezwecken soll.
howtoman
*
Beiträge: 19
Registriert: So, 29.05.2011 13:06

Re: [gelöst]array global initialisieren

Beitrag von howtoman »

DPunch hat geschrieben:Servus

Kannst Du vielleicht nochmal kurz und klar erklären, was genau Dein Ziel ist?
Ich hatte ja bereits erwähnt, dass Du selbstverständlich auch Arrays und Collections global speichern kannst (genau wie Du es mit Deinem myArrayString tust), insofern erschliesst sich mir absolut nicht, was das Ganze bezwecken soll.

Omg, 4 stunden arbeit umsonst >.< weil man die arrays doch global benutzen kann.. sollte nur genauer die beiträge lesen.
Das mit Collection (womit ich angefangen habe) habe ich trotzdem nicht hingekriegt. Also global eine Collection benutzen.
Mit arrays hatte ich irgendein Fehler, global Array war immer leer, aber jetzt wo ich sehr einfach getestet habe, sehe ich dass man die doch global verwenden kann. Schade :) Naja egal.
Wie kann man aber Collection global verwenden ?

Code: Alles auswählen

Global g_Array as new collection

sub sub1
  g_Array.add(Array(Array(1,2,3), Array(4,5)), "item")

  msgbox g_Array.item("item")(0)(0)
end sub

sub sub2
  msgbox g_Array.item("item")(0)(0)
end sub
geht nicht >.<
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: [gelöst]array global initialisieren

Beitrag von DPunch »

Servus

Mit dem Stichwort new außerhalb der Prozedur bewirkst Du, dass bei jedem Aufruf eines Makros eine neue, leere Collection erstellt wird.
Du musst also den Umweg über Deklarierung als Variant und Zuweisung erst innerhalb einer Prozedur gehen:

Code: Alles auswählen

Global g_Array

sub sub1
  g_Array = CreateObject("Collection")
  g_Array.add(Array(Array(1,2,3), Array(4,5)), "item")
  
  msgbox g_Array.item("item")(0)(0)
end sub

sub sub2
  msgbox g_Array.item("item")(0)(0)
end sub
howtoman
*
Beiträge: 19
Registriert: So, 29.05.2011 13:06

Re: [gelöst]array global initialisieren

Beitrag von howtoman »

Perfekt!
Danke! :)
Antworten