Seite 1 von 1
[gelöst]array global initialisieren
Verfasst: Di, 15.05.2012 15:54
von juergen_w1987
Hy leute,
kann man ein array auch global initialsieren? Bzw wie geht das?
Re: array global initialisieren
Verfasst: Di, 15.05.2012 16:17
von Karolus
Hallo
Vmtl.:
Code: Alles auswählen
Global de as Variant
...
de = array("0", "Baum","Haus","gehen")
Karo
Re: array global initialisieren
Verfasst: Di, 15.05.2012 17:50
von juergen_w1987
Code: Alles auswählen
Global de as Variant
...
de = array("0", "Baum","Haus","gehen")
Leider nein.
ist eine funktion und die kann man nur in einer funktion(subroutine) aufrufen.
leider nicht die Lösung
Re: array global initialisieren
Verfasst: Di, 15.05.2012 17:56
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
Re: array global initialisieren
Verfasst: Di, 15.05.2012 18:45
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
Re: array global initialisieren
Verfasst: Mi, 16.05.2012 20:48
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.
Re: [gelöst]array global initialisieren
Verfasst: So, 27.05.2012 16:55
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.
Re: [gelöst]array global initialisieren
Verfasst: So, 27.05.2012 20:10
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.
Re: [gelöst]array global initialisieren
Verfasst: Mo, 28.05.2012 00:54
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)
Re: [gelöst]array global initialisieren
Verfasst: Mo, 28.05.2012 10:19
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
Re: [gelöst]array global initialisieren
Verfasst: Mo, 28.05.2012 14:08
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 ..
Re: [gelöst]array global initialisieren
Verfasst: Mo, 28.05.2012 16:01
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.
Re: [gelöst]array global initialisieren
Verfasst: Mo, 28.05.2012 18:59
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 >.<
Re: [gelöst]array global initialisieren
Verfasst: Mo, 28.05.2012 19:40
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
Re: [gelöst]array global initialisieren
Verfasst: Mo, 28.05.2012 20:14
von howtoman
Perfekt!
Danke!
