Maximallänge bei makros?

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

Moderator: Moderatoren

gurkende_gurke
**
Beiträge: 42
Registriert: So, 21.09.2008 16:42

Maximallänge bei makros?

Beitrag von gurkende_gurke »

Hallo
Mein Problem ist folgendes: ich habe ein ziemlich umständliches Makro geschrieben, das vielleicht zu lang geworden ist. Jedenfalls habe ich die Hälfte des Makrocodes in einer worddatei bearbeitet, und wenn ich diese der anderen Makrohälfte hinzufüge kommt folgende Fehlermeldung:
"der eingegebene Text ist länger als die zulässige maximale Länge für dieses Textfeld! der Text wurde abgeschnitten!"
woraufhin nur ein zwanzigstel des Textes eingefügt wird. Danach kann ich auch keinen Text mehr reinkopieren, sondern nur noch tippen... Irgendeine Lösung? ich kann auch mein Makro posten, nur glaube ich, das es zu lang ist :D
Vielen Dank schonmal für jede Hilfe
hawkhunter2002
**
Beiträge: 32
Registriert: So, 25.02.2007 09:11
Wohnort: Ingolstadt

Re: Maximallänge bei makros?

Beitrag von hawkhunter2002 »

Hallo Gurke ?! :?

Also (Basic) Makros werden in Modulen verwaltet, die in Bibliotheken organisiert sind.
Eine Bibliothek kann 16.000 Module aufnehmen (sollte reichen) und ein Modul kann eine Größe von 64 kB (sprich 64000 Zeichen)besitzen - was wahrscheinlich bei dir überschritten ist. Organisiere dein(e) Makro(s) doch in mehrerern Modulen, dann sollte auch einem größeren Projekt nichts im Wege stehen.

Gruß

Hawk
OOO Basic Programmierers best Friend XRay-Tool
gurkende_gurke
**
Beiträge: 42
Registriert: So, 21.09.2008 16:42

Re: Maximallänge bei makros?

Beitrag von gurkende_gurke »

Gute Idee :D
Nur das Problem ist, es ist ein Makro... kann man ein Makro in mehrere Module aufteilen? wenn ja, wie?
Vielen Dank schonmal :)
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Maximallänge bei makros?

Beitrag von Charly »

Hallo Gurke!

Ein Makro kann geteilt und auf verschiedene Module verteilt werden.
Durch ein Hauptmakro können die einzelnen Teile gestartet und gesteuert werden. Einfach den Namen der Subroutine oder Funktion wie einen Befehl eingeben.

Geprüft werden muss welche Variablen die Teile gemeinsam haben. Diese müssen dann als Public oder Global (siehe OpenOffice-Hilfe) deklariert werden.

Alternativ können die Daten auch als Parameter ausgetauscht werden. Mit Funktionen erhält man z.B. Auch Rückgabewerte.

Gruß
Charly
gurkende_gurke
**
Beiträge: 42
Registriert: So, 21.09.2008 16:42

Re: Maximallänge bei makros?

Beitrag von gurkende_gurke »

das ist schonmal gut :)
geht das teilen eines Makros auch innerhalb einer Do ... Loop While Schleife? weil so gut wie mein ganzes Makro aus einer solchen Schleife besteht. Wenn ja, könnte ich ein Beispiel haben wie man durch ein Hauptmakro 2 Makros verbindet? Ich könnte mein Makro auch posten, bräuchte dafür aber mehr als einen post, weil es halt zu viele Zeichen sind...

Gruß
gurke
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Maximallänge bei makros?

Beitrag von Charly »

Hallo Gurke!

Man kann von überall in eine Sub oder Functionsprozedur springen. Nach erreichen von End Sub oder End function springt das Programm automatisch zurück. Man muss nur dafür sorgen, dass das neue Programm auch die Daten hat, die es braucht. Variablen innerhalb einer Prozedur deklariert, kennt das andere Programm nicht, dagegen kann es als public deklarierte Variable erkennen und verändern.

Hier ein einfaches Beispiel:

Code: Alles auswählen

Public summe as long

Sub Main()

Dim z as long
Dim I as integer
Z = 10
For I = 1 to 100
Summe = Summe + 1
If I = Z then
Unterprogramm
Z = Z + 10
end if
next I
MSGBox (summe)
End Sub

Sub Unterprogramm()
Summe = Summe + 100
end sub
Hier kann das Unterprogramm die Variable auslesen und verändern. Die Variablen I und Z kennt es dagegen nicht. Die Deklaration von Public Variablen erfolgt außerhalb einer Prozedur, also vor dem ersten "Sub".

Noch ein Hinweis. Bei Schleifen muss der Beginn z.B. "Do" und das Ende "loop" in derselben Prozedur sein. Das dazwischen kann in einem Unterprogramm sein.


Gruß
Charly
gurkende_gurke
**
Beiträge: 42
Registriert: So, 21.09.2008 16:42

Re: Maximallänge bei makros?

Beitrag von gurkende_gurke »

Vielen vielen Dank.
Eine letze Frage hätt ich allredings noch: Wie greift man auf ein Makro zu, dass in einem anderen Modul steht? beim Beispiel stehen Unterprogramm und Hauptmakro ja im selben Modul. Und muss man dann die Variablen auf beiden Modulen als public definieren? Schonmal vielen Dank für das erste Beispiel :D und vielleicht kannst du mir meine frage an Hand eines zweiten Beispiels erklären. Vielen Dank für jede Hilfe.

mfg Gurke
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Maximallänge bei makros?

Beitrag von Charly »

Hallo Gurke!

Es spielt keine Rolle in welchem Modul das Unterprogramm steht. Lediglich wenn das andere Modul auch noch in einer anderen Bibliothek wäre, müsste man dafür Sorge tragen, dass die andere Bibliothek auch offen ist.
Public bedeutet, dass die Variable in allen Modulen und Bibliotheken gültig ist. Eine Deklaration als private würde dagegen nur innerhalb eines Moduls gültig sein.

Das heißt, die Variable muss nur einmal, am besten im Modul des Hauptprogramms deklariert werden. Unterprogramme können mit ihrem Namen aufgerufen werden, egal in welchem Modul sie stehen. Man darf nur den Namen nicht öfters verwenden und es darf kein Namenskonflikt mit irgendwelchen Schlüsselwörtern von OpenOffice auftreten.


Gruß

Charly
Antworten