[gelöst]array global initialisieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst]array global initialisieren

Re: [gelöst]array global initialisieren

von howtoman » Mo, 28.05.2012 20:14

Perfekt!
Danke! :)

Re: [gelöst]array global initialisieren

von DPunch » Mo, 28.05.2012 19:40

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

von howtoman » Mo, 28.05.2012 18:59

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

von DPunch » Mo, 28.05.2012 16:01

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

von howtoman » Mo, 28.05.2012 14:08

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

von Karolus » Mo, 28.05.2012 10:19

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

von howtoman » Mo, 28.05.2012 00:54

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

von DPunch » So, 27.05.2012 20:10

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

von howtoman » So, 27.05.2012 16:55

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: array global initialisieren

von DPunch » Mi, 16.05.2012 20:48

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: array global initialisieren

von juergen_w1987 » Di, 15.05.2012 18:45

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

von Karolus » Di, 15.05.2012 17:56

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

von juergen_w1987 » Di, 15.05.2012 17:50

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

Re: array global initialisieren

von Karolus » Di, 15.05.2012 16:17

Hallo
Vmtl.:

Code: Alles auswählen

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

[gelöst]array global initialisieren

von juergen_w1987 » Di, 15.05.2012 15:54

Hy leute,

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

Code: Alles auswählen

Global de(3)=("0",	"Baum","Haus","gehen")

Nach oben