Seite 1 von 2
kann Code dynamisch Variablen erstellen?
Verfasst: Mo, 12.01.2009 23:01
von steffn
Ich denke oft in den letzten Wochen, dass ich jetzt gut zig Variablen oder Datenfelder brauchen könnte, die ich aber nicht alle selber deklarieren werde. Daher würde ich sie gerne, je nach dem, wie viele mein Macro braucht, per Code automatisch erstellen lassen. Ist so etwas möglich?
'Redim' kommt dem ja schon recht nahe aber ich hätte gerne sehr viele zum Beispiel mit fortlaufender Zahl oder Buchstabe.
Ich könnte mir durchaus vorstellen, dass es eine Art ~service~ .CreateArray("Standardname" & cstr(FortlaufendeZahl), AnzahlFelder) gibt.

Re: kann Code dynamisch Variablen erstellen?
Verfasst: Mi, 10.08.2011 15:45
von steffn
alte idee,
wieder aufgegriffen,
zweiter versuch macht kluch
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Mi, 10.08.2011 17:55
von F3K Total
Hallo Steffn,
schau dir mal
an, da kannst Du ein Array dynamisch erweitern, ohne die bereits enthaltenen Werte zu löschen.
Gruß R
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Mi, 10.08.2011 18:58
von steffn
Ich habe das Gefühl, ich kann nicht mit api.openoffice.org oder dem SDK umgehen.
Wie komme ich zu der Zahl, die die höchste Anzahl an Feldern und Dimensionen in einem Datenfeld vermittelt?
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Mi, 10.08.2011 19:27
von F3K Total
Hi,
schau mal hier, mit LBound() and UBound(), ist ganz gut erklärt:
http://www.oooforum.org/forum/viewtopic.phtml?t=4615
Gruß R
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Mi, 10.08.2011 19:54
von steffn
Ja ... äh ... okay, mag sein.
Aber ich würde wirklich gerne wissen, wie ich in der SDK zu der Zahl komme, die mir die höchstmögliche Anzahl an Feldern und Dimensionen eines Datenfelds zeigt.
Zum Beispiel:
Wie starte ich das Ding?
C:\Programme\OpenOffice.org 3\Basis\sdk\index.html - *Doppelklick* - ist es das?
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Mi, 10.08.2011 21:55
von Karolus
Hallo
Wie starte ich das Ding?
C:\Programme\OpenOffice.org 3\Basis\sdk\index.html - *Doppelklick* - ist es das?
Das ist eine html-datei - der Dateibrowser oder Internetbrowser deiner Wahl sollte dir lesbaren Zugang verschaffen.
Karo
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Do, 11.08.2011 04:45
von Stephan
Aber ich würde wirklich gerne wissen, wie ich in der SDK zu der Zahl komme, die mir die höchstmögliche Anzahl an Feldern und Dimensionen eines Datenfelds zeigt.
Na überhaupt nicht, da es sich bei LBOUND() und UBOUND() um Funktionen der Sprache StarBasic handelt und nicht um Teile der API oder des SDK.
Wie starte ich das Ding?
Und was soll hier das "Ding" sein?
C:\Programme\OpenOffice.org 3\Basis\sdk\index.html - *Doppelklick* - ist es das?
Tja, keine genaue Ahnung was Du suchst.
Die angegebene html-Datei, ist jedenfalls, wie schwerlich zu übersehen, eine Übersichtsseite über die Bestandteile des SDK.
(Wobei ich jetzt wegen des letzten Teils des Pfads (sdk\index.html) annehme das wir über dieselbe DAtei reden, denn ich weiß garniucht wioe der Defaultpfad dieser DAtei bei Standardinstallation des SDK ist.)
Gruß
Stephan
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Do, 11.08.2011 09:26
von F3K Total
Hallo Stefan,
ich denke Steffn wollte gar nicht wissen wie man die Grenzen eines bestehenden Arrays ermittelt,
Stephan hat geschrieben:Na überhaupt nicht, da es sich bei LBOUND() und UBOUND() um Funktionen der Sprache StarBasic handelt und nicht um Teile der API oder des SDK.
... sondern ...
steffn hat geschrieben: höchstmögliche Anzahl an Feldern und Dimensionen eines Datenfelds zeigt.
wie groß ein Array maximal dimensioniert werden kann.
Warum? Da ich es nicht weiss, habe ich nicht weiter geantwortet.
Ich vermute, dass die Zahl uninteressant ist, da die zu verarbeitende Datenmenge wohl eher von der Hardware abhängig sein wird.
Gruß R
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Do, 11.08.2011 10:35
von Stephan
ich denke Steffn wollte gar nicht wissen wie man die Grenzen eines bestehenden Arrays ermittelt,
Ok, falls das so wäre habe ich das falsch verstanden
wir groß ein Array maximal dimensioniert werden kann.
Das kann ich leider nicht beantworten.
(Müßte ich raten würde ich auf einen
Mindestwert von 2^26 tippen weil das
quasi der maximal benötigten Array-Größe für die Methode .getDataArray() entspräche. Bitte hierbei das "quasi" beachten denn ich bin mir bewußt das es formal nur um 2^16 geht.)
Meine allgemeine Erfahrung mit OOo läßt mich erwarten das dieser Wert wahrscheinlich auch nirgens öffentlich dokumentiert ist, sondern bei den Entwicklern erfragt werden müßte.
Die dafür sinnvollste Mailingliste wäre wohl die internationale dev-api-Liste (
dev@api.openoffice.org), siehe:
http://openoffice.org/projects/api/lists
Gruß
Stephan
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Do, 11.08.2011 11:15
von DPunch
Aloha
wir groß ein Array maximal dimensioniert werden kann.
There are no practical limits on the indexes or on the number of elements in an array, so long as there is enough memory.
(...)
You can define hundreds of dimensions in OpenOffice.org Basic Arrays; however, the amount of available memory limits the number of dimensions you can have.
hth
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Do, 11.08.2011 11:22
von Stephan
DPunch hat geschrieben:Aloha
wir groß ein Array maximal dimensioniert werden kann.
There are no practical limits on the indexes or on the number of elements in an array, so long as there is enough memory.
(...)
You can define hundreds of dimensions in OpenOffice.org Basic Arrays; however, the amount of available memory limits the number of dimensions you can have.
hth
Naja, das ist ja ohnehin klar.
Worum es doch aber geht ist wie groß ein Array grundsätzlich dimensioniert werden kann, bei VB 6 sind das glaube ich mich zu erinnern (2^31)-1 Elemente und genau solch eine Zahl muß es zwangläufig auch für Arrays in StarBasic geben - keine Ahnung welche Zahl das konkret ist.
Gruß
Stephan
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Do, 11.08.2011 12:10
von DPunch
Aloha
Stephan hat geschrieben:Worum es doch aber geht ist wie groß ein Array grundsätzlich dimensioniert werden kann
Ich verstehe den Satz
There are no practical limits on the indexes or on the number of elements in an array
so, dass es da eben keine Beschränkung gibt - wobei man über "practical" wohl zweimal nachdenken kann, ein Array mit 2^31 Elementen ist ja schon ausserhalb jeder praktischen Anwendung (vor allem in einem Makro).
Wenn die Größe von Arrays strikt durch die Kapazität eines Long beschränkt wäre, würde ich aber doch vermuten, dass das irgendwo zu finden sein müsste.
Nachtrag:
Schneller Testlauf ergibt:
Maximal 2147483647 + 2147483648 + 1 Elemente (4.294.967.296), entspricht der Kapazität eines signed Long.
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Do, 11.08.2011 14:39
von Stephan
wobei man über "practical" wohl zweimal nachdenken kann, ein Array mit 2^31 Elementen ist ja schon ausserhalb jeder praktischen Anwendung (vor allem in einem Makro).
Sorry, nur dann kann ich ja gleich einen Pudding an die Wand nageln denn für:
so long as there is enough memory
gilt ja andersrum genauso, es kann nach einigen tausend Elementen Schluss sein, wenn der Speicher nicht mehr hergibt.
Wenn die Größe von Arrays strikt durch die Kapazität eines Long beschränkt wäre, würde ich aber doch vermuten, dass das irgendwo zu finden sein müsste.
Ich eher nicht, denn beispielsweise würden die Dinge die nirgens für die API dokumentiert sind mit Sicherheit einen größeren Zeitschriftenartikel füllen, obwohl Dir die Entwickler zu konkreten Nachfragen Details immer gerne verraten (es geht also nicht darum bewußt etwas gehein zu halten) nur zum Dokumentieren ist man zu faul.
Und genauso sind vielfach meine Erfahrungen aus ca. 7 Jahren OOo-Projekt, weiterhelfen auf Nachfrage tut man gerne, dokumentieren eher nicht so gerne.
Gruß
Stephan
Re: kann Code dynamisch Variablen erstellen?
Verfasst: Do, 11.08.2011 18:15
von DPunch
Aloha
Stephan hat geschrieben:(...)gilt ja andersrum genauso, es kann nach einigen tausend Elementen Schluss sein, wenn der Speicher nicht mehr hergibt.
Natürlich kann das sein, aber was hat Dein Umkehrschluss mit dem Thema zu tun? Das ist ja keine Eigenschaft von OOo Basic / StarBasic, sondern Grundlage bei jeglicher Speicherzuweisung/-reservierung.
Das Zitat aus der OOo-Wiki war eine Replik auf die Frage, wie gross Arrays maximal dimensioniert werden können.
Der Verfasser dort deutet an, dass Arrays in ihrer Größe einzig und exklusiv durch den zur Verfügung stehenden Speicher begrenzt sind (und ich habe darüber philosophiert, warum wohl die Formulierung "practical limits" in dem Satz auftaucht). Vom Verfasser nochmal untermalt durch den Einwurf
VBA : Other limit values sometimes apply for data field indexes in VBA. The same also applies to the maximum number of elements possible per dimension. The values valid there can be found in the relevant VBA documentation.
Stephan hat geschrieben:Ich eher nicht, denn beispielsweise würden die Dinge die nirgens für die API dokumentiert sind mit Sicherheit einen größeren Zeitschriftenartikel füllen
Da hast Du sicher Recht, bis jetzt lag aber zumindest die Wiki in den meisten Fällen (wobei ich natürlich nicht alles nachprüfe) richtig - genannte Zitate stammen aus der Wiki und waren in ihrer Aussage so eindeutig, dass ich sie zunächst ohne weiteres Nachprüfen hier wiedergegeben habe.