• Deutsch
  • Polski

INGENIEURBÜRO PROCHOTTA

Dariusz Prochotta

Dipl.-Ing. (PL)

staatlich anerkannter und vom OLG Hamm ermächtigter Übersetzer für Polnisch

Mitglied im Bundesverband der Dolmetscher und Übersetzer e.V. (BDÜ)

Autohotkey – Modul 03

05.10.2017 Autohotkey Keine Kommentare

Wiederholung:

Das haben wir bereits gelernt:

– Tastaturtasten austauschen: x::y

– Eine Zeichenkette durch eine andere ersetzen: ::x::y

– Ein einfaches Skript konstruieren:

   ^Numpad1::

   ….

   ….

   return

– Physikalische Tasten simulieren

– Eine Loop-Schleife konstruieren

   Loop 10 {

  ….

  ….

   }

– Ein Skript unterbrechen

   #z::ExitApp

   return

AutoHotkey kann natürlich viel mehr als nur Tasten simulieren.

Schauen wir uns die Seite https://ahkde.github.io/docs/Tutorial.htm an.

Im Menü auf der linken Seite sehen wir sehr viele AHK-Anweisungen, die in mehrere Kategorien gruppiert wurden, z.B. Ablaufsteuerung, Mathematik, Zeichenkette, Bildschirm. Im Rahmen dieses Blogs versuche ich, die wichtigsten dieser Anweisungen herauszupicken, die man zur Erstellung von typischen und einfachen Anwendungen braucht.

Ein Begriff von zentraler Bedeutung für das Programmieren ist die Variable.

Die Variable ist nichts anderes als ein Platzhalter, der verschiedene Werte annehmen kann.

Sie hat einen Namen (bestehend aus Buchstaben und eventuell Unterstrichen, z.B. „Anzahl_Elemente“, „AnzahlElemente“ oder „anzahlelemente“).

Üblicherweise hat eine Variable auch einen Typ, z.B. Text („string“), Ordnungszahl („integer“) oder reale Zahl.

AutoHotkey verwendet keine explizit definierten Typen, das Programm interpretiert sie automatisch. Das funktioniert sehr gut; wenn ich natürlich versuche, ein Wort mit einem anderen zu multiplizieren, wird das wahrscheinlich schiefgehen, z.B.:

Var_Produkt = Var_1 * Var_2

Wenn hier Var_1 den Wert 3 und Var_2 den Wert 5,5 hat, bekommt die Variable Var_Produkt nach dieser Anweisung den Wert 16,5. Hätten dagegen die Variablen Var_1 und Var_2 die Werte „Sonne“ und „Erde“, wäre die Anweisung sinnlos und wir würden wahrscheinlich eine Fehlermeldung zurückbekommen.

Selbstverständlich ist es auch möglich, einer Variable einen Wert zuzuweisen.
Dafür gibt es in AutoHotkey zwei Methoden:

Die traditionelle Methode:

Zahl = 123 ; der Variable „Zahl“ wird der Wert 123 zugewiesen

Zahl = 123.5 ; der Variable „Zahl“ wird der Wert 123,5 zugewiesen

Zeichenkette = Ingenieurbüro Prochotta ; der Variable „Zeichenkette“ wird der Wert „Ingenieurbüro Prochotta“ zugewiesen

Var_2 = %Var_1% ; hier wird der Wert der Variable „Var_1“ abgerufen und anschließend der Variable „Var_2“ zugewiesen

Die Ausdrucksmethode:

Zahl := 123 ; anstatt des Operators „=“ verwenden wir den Operator „:=“

Zahl := 123.5

Zeichenkette := „Ingenieurbüro Prochotta“ ; hier verwenden wir Anführungszeichen

Var_2 := Var_1  ; ohne Prozentzeichen

Aber was macht man mit diesen Variablen?

Mit Zahlen kann man natürlich rechnen. Zum Beispiel:

Wert_1 := (8 + 2) * 40 ; AutoHotkey behandelt mathematische Operatoren wie die klassische Mathematik

Es geht aber auch so:

c := Sqrt(a*a + b*b)

Das ist die bekannte Pythagoras-Formel. Die Funktion Sqrt gibt eine Quadratwurzel aus.

Zuerst brauchen wir aber noch die Werte (fachsprachlich: Argumente) und b. Vorerst sind sie nämlich noch leer (ohne Zahlenwert).

^Numpad3::

a := 2

b := 3

c := Sqrt (a*a + b*b)

return

Das funktioniert, aber es hat nicht allzu viel Sinn, die Zahlenwerte für und im Programmcode fest zuzuweisen. Es muss doch auch möglich sein, diese Werte beim Benutzer abzufragen. 

Das geht, und dafür gibt es die Anweisung InputBox. Dieser Befehl öffnet ein Eingabefenster, das den Benutzer zur Eingabe einer Zeichenkette auffordert.

Die Syntax lautet:

InputBox, AusgabeVar [, Titel, Anzeigetext, HIDE, Breite, Höhe, X, Y, Schriftart, Zeitlimit, Standardwert]

„AusgabeVar“ ist der Name der Variable, in der die Angabe aus dem Fenster gespeichert wird. Die restlichen Argumente (Werte) sind optional, siehe  InputBox.. Für dieses Beispiel brauche ich nur den „Anzeigetext“. Unser Skript sieht jetzt so aus:

^Numpad3::

InputBox, a,, Geben Sie das Argument a ein:

InputBox, b,, Geben Sie das Argument b ein:

c := Sqrt(a*a + b*b)

return

Unsere Variablen sind und b, einen Titel brauchen wir nicht, und anschließend kommt die Aufforderung „Geben Sie das Argument …“.

Nach der Ausführung des Skripts sehen wir dieses Fenster:

Wir geben die Werte für und ein, bestätigen sie jeweils und … es passiert nichts.
Das Programm hat zwar den Wert 
errechnet, behält ihn aber für sich.

Mithilfe der Anweisung MsgBox können wir uns diesen Wert anzeigen lassen.

Die Syntax dafür lautet:

MsgBox, Text

oder

MsgBox [, Optionen, Titel, Text, Zeitüberschreitung]

^Numpad3::

InputBox, a,, Geben Sie das Argument a ein:

InputBox, b,, Geben Sie das Argument b ein:

c := Sqrt(a*a + b*b)

MsgBox % c ; Durch Voranstellen von „%“ wird jeder Parameter zu einem Ausdruck (Wert der Variable c).

return

Das wäre nun etwas für die Schule; machen wir lieber was Sinnvolles.

^Numpad4::

InputBox, a,, Geben Sie die Anzahl der Anschläge ein:

InputBox, b,, Geben Sie den Zeilenpreis ein:

c := b*a/55

MsgBox, % c

return

Noch eine kleine Modifizierung:

^Numpad4::

InputBox, a,, Geben Sie die Anzahl der Anschläge ein:

InputBox, b,, Geben Sie den Zeilenpreis ein:, , , , , , , , 1.25 ; hier verwende ich den Parameter „Standardwert“

c := b*a/55

d:= „Der Preis für die Übersetzung beträgt: “ . c ; der Punkt verbindet den Text mit dem Wert der Variable „c“

MsgBox, % d

return

Ich habe jetzt sehr viele Variablen produziert. Das mache ich absichtlich – zum besseren Verständnis. Es geht auch einfacher:

^Numpad4::

InputBox, a,, Geben Sie die Anzahl der Anschläge ein:

InputBox, b,, Geben Sie den Zeilenpreis ein:, , , , , , , , 1.25

MsgBox, % „Der Preis für die Übersetzung beträgt: “ . b*a/55

return

Mit den Zahlen-Variablen lässt sich, wie wir sehen, sehr gut rechnen. Analog können wir auch die Text-Variablen verarbeiten, was für unsere Berufsgruppe sicherlich von größerem Interesse ist. So lassen sich viele Operationen an Texten durchführen, z.B. kürzen, sortieren, die einzelnen Buchstaben zählen, kleine Buchstaben durch große ersetzen und umgekehrt, bestimmte Zeichenfolgen in Texten suchen, Textabschnitte durch andere ersetzen und vieles mehr.

Diese Funktionen möchte ich jetzt aber nicht detailliert besprechen. Dafür wird es später noch genug Gelegenheiten geben. Eine Zusammenstellung mit einer sehr ausführlichen Beschreibung findet sich unter https://ahkde.github.io/docs/Tutorial.htm in der Kategorie „Zeichenkette“.

Das war diesmal ziemlich viel Theorie. Im nächsten Beitrag kommen interessante Beispiele. Versprochen.

Wenn Euch dieser Beitrag gefällt, könnt Ihr ihn gerne mit dem Button „Gefällt mir“ kommentieren.

Tags: