 |
Zuweisungen und Stackoperationen
Zuweisungen an String- oder Integervariablen
Zuweisungen an String- oder Integervariablen erfolgen über den Zuweisungsoperator
':='.
Syntax:
-
Stringvariable := Stringausdruck
-
Integervariable := Integerausdruck
Ein Stringausdruck ist entweder eine Stringvariable, eine Zeichenkette,
oder eine Ausdruck, der ausgewertet eine Zeichenkette ergibt. Zeichenketten
werden durch den Delimiter ''' beschränkt. Ein Ausdruck der
Form #ABC innerhalb einer Zeichenkette steht stellvertretend für das
Zeichen mit ASCII-Code ABC ( 1 <= ABC <= 255).
Ein Integerausdruck ist entwerder eine ganze (ggf. negative Zahl) oder
eine Ausdruck, der vollständig ausgewertet eine ganze Zahl ergibt.
Beispiele:
-
A$ := 'Hello World'
-
A$ := intToStr(25)
-
A := 5
-
A := strToInt('25')
Stackoperationen
Funktionsname |
Prototyp |
Beschreibung |
push |
push(String-Stack, String) bzw.
push(Integer-Stack, Integer) |
Der übergebene String / der übergebene Integerwert wird auf
den Stringstack / Integerstack gelegt. |
pop |
pop(String-Stack) : String bzw.
pop(Integer-Stack) : Integer |
Der oberste Wert des String-/Integer-Stacks wird zurückgegeben. |
Beispiele:
push(A%, con('Hello ', B$))
push(A#, cursor.x)
A$ := pop(A%)
A := add(5, pop(A#))
Funktionen
Dieser Abschnitt beschreibt alle Funktionen, die nicht als Methoden der
Objekte Cursor, Text,
Block,
Query
und File definiert sind.
Arithmetische Funktionen
Funktionsname |
Prototyp |
Beschreibung |
add |
add(Integer, Integer) : Integer |
Addition |
sub |
sub(Integer, Integer) : Integer |
Subtraktion |
mul |
mul(Integer, Integer) : Integer |
Multiplikation |
div |
div(Integer, Integer) : Integer |
Division, der zweite Parameter muß ungleich 0 sein. |
Beispiele:
A := add(A, 2)
A := div(A, 2)
B := add(1, cursor.x)
Stringfunktionen, Stringmanipulation
Funktionsname |
Prototyp |
Beschreibung |
con |
con(String, String) :String |
String-Konkatanation |
length |
length(String) : Integer |
Ermittelt die Länge eines Strings. |
getSlice |
getSlice(String, Integer, Integer) : String |
Gibt einen Teil eines Strings zurück. Der erste Integerparameter
kennzeichnet die Anfangspoition, der zweite die Endposition des Teilstrings. |
deleteSlice |
deleteSlice(String, Integer, Integer): String |
Löscht einen Teil eines Strings. Der erste Integerparameter kennzeichnet
die Anfangspoition, der zweite die Endposition des zu löschenden Teilstrings. |
upcase |
upcase(String) : String |
Wandelt alle in einem String enthaltenen Buchstaben in Großbuchstaben
um. |
lowcase |
lowcase(String) : String |
Wandelt alle in einem String enthaltenen Buchstaben in Kleinbuchstaben
um. |
trim |
trim(String, String) : String |
Löscht alle Vorkommen des zweiten Parameters am Anfang und Ende
des ersten Parameters. Der zweite String darf nur aus einem Zeichen bestehen.
Z.B. ergibt trim('aaHalloaa', 'a') den String 'Hallo'. |
trimLeft |
trimLeft(String, String) : String |
Wie trim, es wird aber nur am Anfang des ersten Parameters gelöscht. |
trimRight |
trimLeft(String, String) : String |
Wie trim, es wird aber nur am Ende des ersten Parameters gelöscht. |
stringOf |
stringOf(String, Integer) : String |
Erzeugt einen String der durch n-malige Konkatenation des ersten Parameters
entsteht. n ist der Wert des zweiten Parameters, der erste Parameter darf
nur aus einem Zeichen bestehen. |
Beispiele:
A$ := con('Hello', ' World')
A$ := upcase(con(A$, '!')))
A$ := getSlice(A$, 2, 10)
A$ := stringOf(getSlice('Hallo', 1, 1), mul(A, 10))
Funktionen zur Suche in einem String
Funktionsname |
Prototyp |
Beschreibung |
pos |
pos(String, String) : Integer |
Gibt die Position des ersten Vorkommen des ersten Argumentes im zweiten
Argument zurück. Wird kein Vorkommen gefunden, wird 0 zurückgegeben. |
posRight |
pos(String, String) : Integer |
Wie pos, es wird aber nach dem letzten Vorkommen gesucht. |
regPos |
regPos(String, String) : Integer |
Wir pos, das erste Argument wird als regulärer Ausdruck behandelt.
Zur Syntax von regulären Ausdrücken in Ed42, vgl. Abschnitt
Reguläre
Ausdrücke. |
regMatchStart |
regMatchStart : Integer |
Nach dem Aufruf von regPos kann - falls nicht 0 zurückgegeben
wurde - über regMatchStart die Startpoition des Matches ermittelt
werden. |
regMatchEnd |
regMatchEnd : Integer |
Wie regMatchStart, es wird aber die Endposition des Matches zurückgegeben. |
Beispiele:
A := pos('o W', 'Hello World')
A := regPos('[a-z]+', A$)
B := regMatchStart
E := regMatchEnd
Datum-Uhrzeit-Funktionen
Funktionsname |
Prototyp |
Beschreibung |
datestr |
datestr : String |
Gibt das Datum im Format TT.MM.YY zurück. |
timestr |
timestr: String |
Gibt die Uhrzeit im Format HH:MM:SS zurück. |
Beispiele:
A$ := CON(dateStr, CON(' ', timestr))
Eingabefunktionen
Funktionsname |
Prototyp |
Beschreibung |
inputInt |
inputInt(String) : Integer |
Öffnet einen Dialog zur Eingabe einer Zahl. Der übergebene
String wird als Erläuterung im Dialogfeld angezeigt. |
inputStr |
inputStr(String) : String |
Öffnet einen Dialog zur Eingabe einer Zeichenkette. Der übergebene
String wird als Erläuterung im Dialogfeld angezeigt. |
inputFile |
inputFile(String) : String |
Öffnet den Dateidialog zur Eingabe eines Dateinamens (die zugehörige
Datei muß existieren). Der übergebene String wird als Titel
des Dateidialogs angezeigt. |
Beispiel:
A$ := inputStr('Bitte String eingeben')
Konvertierungsfunktionen
Funktionsname |
Prototyp |
Beschreibung |
strToInt |
strToInt(String) : Integer |
Wandelt einen String in eine Zahl um. |
intoStr |
IntToStr(Integer) : String |
Wandelt eine Zahl in einen String um. |
Beispiel:
A := strToInt(intToStr(100))
Cursoroperationen
Über die Attribute des Objekts cursor kann auf die Position des Cursors
im aktuellen Text zugegriffen werden. Die Methoden des Objekts cursor erlauben
die Navigation im Text.
Attributname |
Typ |
Modus |
Beschreibung |
x |
Integer |
read only |
Enthält die Position des Cursors in der aktuellen Zeile. |
y |
Integer |
read only |
Enthält die Zeilennummer der aktuellen Zeile. |
Methodenname |
Prototyp |
Beschreibung |
goto |
goto(Integer, Integer) |
Bewegt den Cursor zur x-ten Position der y-ten Zeile, wobei x der Wert
des ersten Parameter und y der Wert des zweiten Parameters ist. |
enter |
enter |
Entspricht der Betätigung der Eingabetaste über die Tatstatur. |
tab |
tab |
Entspricht der Betätigung der Tabulator-Taste über die Tatstatur.
Vgl. Abschnitt
Behandlung von Tabulatoren. |
tabBack |
tabBack |
Entspricht der Betätigung der Tabulator-Taste in Verbindung mit
der Umschalt-Taste über die Tatstatur. Vgl. Abschnitt Behandlung
von Tabulatoren. |
home |
home |
Der Cursor wird auf das erste Zeichen der aktuellen Zeile gesetzt. |
end |
end |
Der Cursor wird auf das letzte Zeichen (das kein Leerzeichen ist) der
aktuellen Zeile gesetzt. |
top |
top |
Der Cursor wird auf das erste Zeichen der ersten aktuell angezeigten
Zeile gesetzt. |
bottom |
bottom |
Der Cursor wird auf das erste Zeichen der letzten aktuell angezeigten
Zeile gesetzt. |
up |
up |
Wenn der Cursor nicht in der ersten Zeile des aktuellen Dokumentes
steht, wird der Cursor um eine Zeile nach oben verschoben. |
down |
down |
Wenn der Cursor nicht in der letzten Zeile des aktuellen Dokumentes
steht, wird der Cursor um eine Zeile nach unten verschoben. |
left |
left |
Wenn der Cursor nicht in der ersten Spalte der aktuellen Zeile steht,
wird er um ein Zeichen nach links verschoben. |
right |
right |
Der Cursor wird um ein Zeichen nach rechts verschoben (es sei denn,
die maximale Zeilenlänge (2048 Zeichen) ist erreicht). |
pageDown |
pageDown |
Der Cursor wird um eine Bildschirmseite nach unten verschoben. Ist
das nicht möglich, wird der Cursor auf die letzte Zeile der aktuellen
Datei gesetzt. Die Spaltenposition bleibt unverändert. |
pageUp |
pageUp |
Der Cursor wird um eine Bildschirmseite nach oben verschoben. Ist das
nicht möglich, wird der Cursor auf die erste Zeile der aktuellen Datei
gesetzt. Die Spaltenposition bleibt unverändert. |
Beispiele:
X := cursor.x
Y := cursor.y
cursor.goTo(X, add(Y,2))
cursor.right
Manipulation des aktuellen
Textes
Über das Objekt text können Attribute des aktuellen Textes bzw.
der aktuellen Zeile abgefragt werden; über die Methoden des Objektes
text kann der Inhalt der aktuellen Zeile gelesen und verändert werden.
Attributname |
Typ |
Modus |
Beschreibung |
length |
Integer |
read only |
Enthält die Länge der aktuellen Zeile. |
tabWidth |
Integer |
read only |
Enthält die über die Projektoptionen
(Registerkarte Tabulatoren) konfigurierte Tabulatorlänge, vgl.
Behandlung
von Tabulatoren. |
insertModus |
Boolean |
read only |
True, wenn der Einfügemodus gleich Insert ist, False sonst. |
Methodenname |
Prototyp |
Beschreibung |
insert |
insert(String) |
Fügt an der aktuellen Position im Text den übergegenen String
ein. |
insertLine |
insertLine(String) |
Wie insert, es wird zusätzlich das Drücken der Eingabetaste
nachempfunden. |
setLine |
setLine(String) |
Ersezt die aktuelle Textzeile durch den übergebenen String. |
deleteLine |
deleteLine |
Löscht die aktuelle Textzeile |
deleteSlice |
deleteSlice(Integer, Integer) |
Löscht einen Auschnitt der aktuellen Zeile. Die Startposition
des zu löschenden Ausschnitts ist durch den ersten Parameter festgelegt,
die Endposition durch den zweiten Parameter. |
deleteToLineEnd |
deleteToLineEnd |
Löscht in der aktuellen Zeile alles von der aktuellen Position
ab bis zum Zeilenende. |
deleteToWordEnd |
deleteToWordEnd |
Löscht in der aktuellen Zeile alles von der aktuellen Position
ab bis zum Wortende. |
cut |
cut |
Enthält die aktuelle Zeile ab der aktuellen Position Text, wird
dieser Text in eine neue Folgezeile umgehängt. Enthält die aktuelle
Zeile ab der aktuellen Position keinen Text, wird der Text der Folgezeile
(falls vorhanden) in die aktuelle Zeile hinter die aktuelle Cursorposition
umgehängt. Die Folgezeile wird dabei gelöscht. |
paste |
paste |
Analog zu cut. |
getChar |
getChar : String |
Liefert das unter dem Cursor stehende Zeichen. |
getWord |
getWord : String |
Liefert das unter dem Cursor stehende Wort. |
getSlice |
getSlice(Integer, Integer) : String |
Liefert einen Ausschnitt der aktuellen Zeile. Die Startposition des
Ausschnitts ist durch den ersten Parameter festgelegt, die Endposition
durch den zweiten Parameter. |
line |
line : String |
Liefert den gesamten Text der aktuellen Zeile. |
setInsertModus |
setInsertModus |
Setzt den Einfügemodus auf Insert. |
setOverwriteModus |
setOverwriteModus |
Setzt den Einfügemodus auf Overwrite. |
Beispiele:
A$ := text.line;
A$ := text.getSlice(B,E)
text.deleteSlice(B,E)
text.insert(A$)
text.insertLine('Hallo')
Blockoperationen
Attributname |
Typ |
Modus |
Beschreibung |
marked |
Boolean |
read only |
True, wenn im aktuellen Text ein Block markiert ist, False sonst. |
startLine |
Integer |
read only |
Die Zeilennummer der Zeile, in welcher der Block beginnt. Nur sinnvoll
verwendbar wenn marked = true. |
endLine |
Integer |
read only |
Die Zeilennummer der Zeile, in welcher der Block endet. Nur sinnvoll
verwendbar wenn marked = true. |
startPos |
Integer |
read only |
Die Positon in welcher der Block innerhalb der ersten Blockzeile (vgl.
startLine) beginnt. Nur sinnvoll verwendbar wenn marked = true. |
endPos |
Integer |
read only |
Die Positon in welcher der Block innerhalb der letzten Blockzeile (vgl.
endLine) endet. Nur sinnvoll verwendbar wenn marked = true. |
Methodenname |
Prototyp |
Beschreibung |
begin |
begin |
Die aktuelle Cursorposition wird zum neuen Blockanfang. |
end |
end |
Die aktuelle Cursorposition wird zum neuen Blockende. |
markWord |
markWord |
Das unter dem Cursor stehende Wort wird als Block markiert. |
markLine |
markLine |
Die aktuelle Zeile wird als Block markiert. |
markAll |
markAll |
Der gesamte aktuelle Text wird als Block markiert. |
unmark |
unmark |
Die Blockmarkierung wird aufgehoben. Nur sinnvoll verwendbar wenn marked
= true. |
toCB |
toCB |
Der aktuell markierte Block wird in die Zwischenablage kopiert. Nur
sinnvoll verwendbar wenn marked = true. |
fromCB |
fromCB |
Der aktuelle Inhalt der Zwischenablage wird an die aktuelle Cursorposition
kopiert und als Block markiert. |
delete |
delete |
Der aktuell markierte Block wird gelöscht. Nur sinnvoll verwendbar
wenn marked = true. |
Beispiele:
if not block.marked
block.markWord
endIf
if block.marked
B := block.startPos
E := block.endPos
A$ := text.getSlice(B,E)
A$ := con('htons(', con(A$,')'))
text.deleteSlice(B,E)
cursor.goTo(B,cursor.y)
text.insert(A$)
block.unmark
endIf
Suchen und Ersetzen
Das Objekt query bietet Attribute und Methoden, die für die Einbindung
von Textsuche und das -ersetzung in Makros notwendig sind.
Attributname |
Typ |
Modus |
Beschreibung |
target |
String |
write only |
Zu suchender Text. |
substitute |
String |
write only |
Zu ersetzender Text (irrelevant falls das Attribut replace den Wert
false hat) |
block |
Boolean |
write only |
true: es wird im markierten Block gesucht; false: es wird im gesamten
Text gesucht. |
forward |
Boolean |
write only |
true: der Text wird vorwärts durchsucht; false: der Text wird
rückwärts durchsucht. |
wholeWords |
Boolean |
write only |
true: der zu suchende Text darf nicht Teil eines Wortes sein; false
sonst. |
startLine |
Boolean |
write only |
true: der gesuchteText muß am Anfang einer Zeile stehen; false
sonst. |
endLine |
Boolean |
write only |
true: der gesuchteText muß am Ende einer Zeile stehen; false
sonst. |
ignoreUpperLower |
Boolean |
write only |
true: es wird nicht zwischen Groß- und Kleinschreibung unterschieden;
false sonst. |
regExp |
Boolean |
write only |
true: Der zusuchende Text wird als regulärer Ausdruck interpretiert;
false sonst. Zur Syntax von regulären Ausdrücken vergleiche Abschnitt
Reguläre
Ausdrücke. |
replace |
Boolean |
write only |
true: Der gefundene Text soll mit dem im Attribute subtitute enthaltenen
Text ersetzt werden; false sonst. |
ask |
Boolean |
write only |
true: Vor einer Ersetzung soll eine Bestätigung durch den Benutzer
erfolgen; false sonst. |
found |
Boolean |
read only |
true: Die Suche war erfolgreich; false sonst. Der Wert des Attributes
wird durch den Aufruf der Methode execute gesetzt. |
Zur Verwendung beliebiger ASCII-Codes für Werte der Attribute target
und substitute vgl. Abschnitte Suchen
im aktuellen Text und Ersetzen
im aktuellen Text.
Methodenname |
Prototyp |
Beschreibung |
execute |
execute |
Startet den Such- bzw. Ersetzungsvorgang. |
reset |
reset |
Belegt Attribute mit Standardvorgaben. Entspricht folgenden Zuweisungen:
query.block := false
query.forward := true
query.words := false
query.upcase := true
query.startLine := false
query.endLine := false;
query.regExp := false;
query.replace := false;
|
match |
match : String |
Gibt nach Aufruf der Methode execute den gefundenen Text zurück
falls das Attribut found den Wert true enthält. |
matchStart |
matchStart : Integer |
Gibt nach Aufruf der Methode execute die Startposition des gefundenen
Textes zurück falls das Attribut found den Wert true enthält. |
matchEnd |
matchEnd : Integer |
Gibt nach Aufruf der Methode execute die die Endposition des
gefundenen Textes zurück falls das Attribut found den Wert true enthält. |
subMatchCount |
subMatchCount : Integer |
Gibt nach Aufruf der Methode execute die Anzahl der gefundenen
Teilsaudrücke zurück (bei regulärer Suche, vgl. Reguläre
Ausdrücke). |
subMatch |
subMatch(Integer) : String |
Gibt nach Aufruf der Methode execute den i-ten Teilsausdruck
zurück, wobei i die übergebene Zahl bezeichnet (bei regulärer
Suche, vgl. Reguläre
Ausdrücke). |
Beispiele:
makro suchen
query.reset
query.target := 'an Br'
query.execute
if query.found
B := query.matchStart
E := query.matchEnd
A$ := text.getSlice(B,E)
A$ := con('test(', con(A$,')'))
text.deleteSlice(B,E)
cursor.goTo(B,cursor.y)
text.insert(A$)
endIf
endMakro
makro regsuchen
query.reset
query.target := '[narB ]+'
query.regExp := true
query.execute
if query.found
B := query.matchStart
E := query.matchEnd
A$ := text.getSlice(B,E)
A$ := con('test(', con(A$,')'))
text.deleteSlice(B,E)
cursor.goTo(B,cursor.y)
text.insert(A$)
endIf
endMakro
Dateioperationen
Das Objekt file bietet methoden und Attribute an, die im weitensetn Sinne
mit Operationen auf Dateien oder Verzeichnissen verbunden sind. Beispielsweise
sind Methoden zum Öffnen und Speichern von Dateien sowie zur Manipulation
von Pfadbezeichnern vorhanden.
Attributname |
Typ |
Modus |
Beschreibung |
name |
String |
read only |
Der Name der aktuellen Datei (incl. Plattenbezeichner, Verzeichnis
und Extension). |
homeDir |
String |
read only |
Das Home-Directory von Ed42. |
Methodenname |
Prototyp |
Beschreibung |
new |
new |
Erzeugt einen leeren Text. |
load |
load(String) |
Lädt die Datei mit dem übergebenen Namen. Ist die Datei bereits
geladen, wird zur Datei gewechselt. |
save |
save |
Speichert die aktuelle Datei ab. |
saveAs |
saveAs(String) |
Speichert die aktuelle Datei unter dem übergebenen Namen ab. Dem
aktuellen Text wird der Name zugeordnet. |
close |
close |
Schließt die aktuelle Datei. |
extractName |
extractName(String) |
Gibt aus dem übergebenen Pfadbezeichner den Dateinamen zurück.
Falls es sich bei dem übergebenen String nicht um einen korrekten
Pfadbezeichner handelt, wird ein Leerstring zurückgegeben. |
extractPath |
extractPath(String) |
Gibt aus dem übergebenen Pfadbezeichner das Verzeichnis (incl.
Plattenbezeichner) zurück. Falls es sich bei dem übergebenen
String nicht um einen korrekten Pfadbezeichner handelt, wird ein Leerstring
zurückgegeben. |
extractExt |
extractExt(String) |
Gibt aus dem übergebenen Pfadbezeichner die Extension zurück.
Falls es sich bei dem übergebenen String nicht um einen korrekten
Pfadbezeichner handelt oder keine Extension enthalten ist, wird ein Leerstring
zurückgegeben. |
extractDrive |
extractDrive(String) |
Gibt aus dem übergebenen Pfadbezeichner den Plattenbezeichner
zurück. Falls es sich bei dem übergebenen String nicht um einen
korrekten Pfadbezeichner handelt oder keine Plattenangabe enthalten ist,
wird ein Leerstring zurückgegeben. |
getCurrentDir |
getCurrentDir : String |
Liefert das aktuelle Verzeichnis zurück. |
setCurrentDir |
setCurrentDir(String) |
Setzt das aktuelle Verzeichnis auf den übergebenen Bezeichner.
Ist das gewünschte Verzeichnis nicht vorhanden, wird versucht es anzulegen.
Handelt es sich bei dem übergebenen Bezeichner um keinen gültigen
Verzeichnisbezeichner, bleibt das aktuelle Verzeichnis unverändert. |
exists |
exists(String) |
Liefert true wenn der übergebene String der Name einer existierenden
Datei ist. |
dirExists |
dirExists(String) |
Liefert true wenn der übergebene String der Name eines existierenden
Verzwichnisses ist. |
trimName |
trimName(String) : String |
Liefert die Zeichnekette die entsteht, in dem jedes Vorkommen von '\\'
im übergebenen String durch '\' ersetzt. |
Beispiele:
makro filetest
text.insertLine(file.extractPath(file.name))
file.saveAs('c:\test.txt')
text.insertLine(file.extractPath(file.name))
text.insertLine(file.extractName(file.name))
endMakro
Vergleiche
Vergleiche können in Zusammenhang mit if-Konstrukten
oder repeat-until-Schleifen
eingesetzt werden.
Vergleichsoperator |
Signatur |
Beschreibung |
< |
Integer < Integer oder
String < String |
Liefert true, wenn der erste Parameter kleiner als der zweite ist;
false sonst. |
> |
Integer > Integer oder
String > String |
Liefert true, wenn der erste Parameter geöße als der zweite
ist; false sonst. |
<= |
Integer <= Integer oder
String <= String |
Liefert true, wenn der erste Parameter kleiner oder gleich dem zweiten
Parameter ist; false sonst. |
>= |
Integer >= Integer oder
String >= String |
Liefert true, wenn der erste Parameter größer oder gleich
dem zweiten Parameter ist; false sonst. |
= |
Integer = Integer oder
String = String |
Liefert true, wenn beide Parameter gleich sind ist; false sonst. |
<> |
Integer <> Integer oder
String <> String |
Liefert true, wenn die Parameter verschieden sind ist; false
sonst. |
Beispiele:
I := 1
repeat
text.insertLine(intToStr(I))
cursor.right
I := add(I, 1)
until I > 20
if U <= mul(A,2)
B$ := con(B$, ' to ')
else
B$ := con(B$, ' downto ')
endIf
If-Then-Else
Über if-then-else-Kontstrukte kann die Durchführung bestimmter
Makroabschnitte von Bedingungen abhängig gemacht werden. Der else-Zweig
ist optional. If-then-else-Konstrukte können beliebig geschachtelt
werden.
Syntax:
if Bedingung
Kommando_i
...
Kommando_j
else
Kommando_k
...
Kommando_l
endIf
oder
if Bedingung
Kommando_i
...
Kommando_j
endIf
Beispiele:
if A < 10
gotoUp('zurueck')
else
if A < 20
gotoDown('vor')
endIf
endIf
if query.found
B := query.matchStart
E := query.matchEnd
endIf
Repeat-Until
Über repeat-until-Konstrukte können Schleifen realisiert werden.
Syntax:
repeat
Kommando_1
...
Kommando_n
until Bedingung
Beispiele:
repeat
text.insertLine(intToStr(I))
cursor.right
I := add(I, 1)
until I > 20
A$ = ''
repeat
A$ := con(A$,'ab')
until length(A$) >= 20
Labels und Goto
Über die Befehle label, gotoUp und gotoDown können Sprünge
realisiert werden. Über den Befehl label kann ein Sprungziel definiert
werden. Der Befehl gotoUp sucht rückwärts im Makrocode nach dem
spezifizierten Sprungziel, der Befehl gotoDown sucht vorwärts nach
dem spezifizierten Sprungziel. Wird das Sprungiel gefunden, wird mit dem
Befehl nach dem Sprungziel fortgefahren. Wird das Sprungzeil nicht gefunden,
wird im Falle des Befehl gotoUp mit dem ersten Befehl des Makros fortgefahren,
im Falle von gotoDown wird das Makro beendet.
Syntax:
label Sprungziel
gotoUp Sprungziel
gotoDown Sprungziel
Beispiel:
makro checkgoto
text.insertLine('Start')
label zurueck
A := inputInt('Zahl eingeben')
if A < 10
gotoUp('zurueck')
else
if A < 20
gotoDown('vor')
endIf
endIf
text.insertLine('Hello')
gotoDown('ende')
label vor
text.insertLine('World')
label(ende)
endMakro
Aufruf und Beenden von Makros
Über die Befehle start und exit können Makros gestartet und beendet
werden. Über start kann nur ein Makro aufgerufen werden, das in der
gleichen Makrodatei definiert ist.
Syntax:
start Makroname
exit
Beispiele:
makro testB
B := 5
exit
B := 10
endMakro
makro testA
nonStop
A$ := 'test'
start(con(A$, 'B'))
text.insertLine(intToStr(B))
endMakro
Sonstiges
Die folgende Tabelle enthält weitere Kommandos und Ausdrücke,
die keinem der vorangegangenen Abschnitte zugeordnet werden können.
Kommando / Ausdruck |
Prototyp |
Erläuterung |
showText |
showText |
Über das Kommando showText kann die Darstellung des aktuellen
Textes aktualisiert werden. |
exec |
exec(String, String, String) |
Erlaubt die Ausführung beliebiger Programme. Der erste String
spezifiziert die auszuführende Datei, der zweite String spezifiziert
Parameter, der Dritte String das Ausführungsverzeichnis. |
nonStop |
nonStop |
Wird dieser Befehl angegeben, wird zur Laufzeit des Makros kein
Button eingeblendet, der den Abbruch des Makros ermöglicht. Bei kurzen
Makros kann dies einen signifikanten Laufzeitvorteil mit sich bringen. |
description |
description Zeichenkette |
Die Zeichenkette enthält eine kurze Beschreibung des Makros. Das
Kommando wird während der Ausführung von Makros ignoriert; die
Beschreibung dient der Anzeige in Menüs oder Auswahllisten, vgl. Sprachabhängige
Makros. |
true |
true |
Die stets ware Bedingung. |
false |
false |
Die stets falsche Bedingung. |
rem |
rem Zeichenkette |
Der Befehl rem leitet eine Kommentarzeile ein. |
Beispiele:
nonStop
if true
showText
else
rem Hier kommt man nie hin
endif
exec('ed42', 'hello.txt', 'c:\ed42')
|