# Flashcard Deck: Omnis Commands **Thema**: Die wichtigsten Omnis-Befehle **Schwierigkeit**: Anfaenger -> Fortgeschritten **Karten**: 25 --- ## Karte 1 | Basis **Q:** Was macht der Befehl `Calculate`? **A:** Berechnet einen Ausdruck und weist das Ergebnis einer Variablen zu. `Calculate lX as 5 + 3` -> lX = 8. Aequivalent zu `let x = 5 + 3` in JS. --- ## Karte 2 | Basis **Q:** Was macht der Befehl `Do`? **A:** Fuehrt eine Methode oder einen Notation-Ausdruck aus. `Do iObj.$method() Returns lResult`. Wie ein Funktionsaufruf. --- ## Karte 3 | Basis **Q:** Was macht `Quit method`? **A:** Beendet die aktuelle Methode und gibt optional einen Wert zurueck. `Quit method lResult` = `return lResult` in JS. --- ## Karte 4 | Basis **Q:** Was macht `OK message`? **A:** Zeigt ein Dialogfeld mit einer Nachricht. `OK message {Hallo [lName]!}` - wie `alert()` in JS. Variablen in `[]` werden ersetzt. --- ## Karte 5 | Basis **Q:** Was ist der Unterschied zwischen `[lVar]` und `@[lVar]` in SQL? **A:** `[lVar]` = direkte Text-Substitution (SQL-Injection-Gefahr!). `@[lVar]` = Bind-Variable (sicher, parametrisiert). **Immer `@[lVar]` in SQL verwenden!** --- ## Karte 6 | Basis **Q:** Was macht `If / Else / End If`? **A:** Bedingte Ausfuehrung - identisch zu anderen Sprachen. `If lAge >= 18 ... Else ... End If`. WICHTIG: `End If` ist Pflicht! --- ## Karte 7 | Basis **Q:** Was macht `For ... End For`? **A:** Zaehlschleife: `For lI from 1 to 10 step 1 ... End For`. Oder Listen-Iteration: `For each line in list from 1 to lList.$linecount step 1 ... End For`. --- ## Karte 8 | Basis **Q:** Was macht `While ... End While`? **A:** Bedingungsschleife: `While lCounter < 100 ... End While`. Wie `while` in jeder anderen Sprache. --- ## Karte 9 | Mittel **Q:** Was macht `Switch / Case / Default / End Switch`? **A:** Fallunterscheidung: `Switch lStatus / Case 'A' ... Case 'B' ... Default ... End Switch`. Wie `switch` in JS, aber OHNE `break` noetig! --- ## Karte 10 | Mittel **Q:** Was macht `Quit all methods`? **A:** Bricht die GESAMTE Methodenkette ab (alle aufrufenden Methoden). Wie ein sofortiger Hard-Exit. Vorsichtig verwenden! --- ## Karte 11 | Mittel **Q:** Was macht `Enter data`? **A:** Uebergibt die Kontrolle an den Benutzer, damit er Daten eingeben kann. Die Methode pausiert, bis der User fertig ist. Gibt es in modernen Sprachen nicht! --- ## Karte 12 | Mittel **Q:** Was macht `Yes/No message`? **A:** Zeigt einen Dialog mit Ja/Nein-Buttons. Ergebnis in `#F`: `Yes/No message {Sicher?} / If flag true ... End If`. Wie `confirm()` in JS. --- ## Karte 13 | Mittel **Q:** Was ist `#F` (der Flag)? **A:** Ein globaler Boolean-Wert, der von vielen Befehlen gesetzt wird. `Returns #F` bei SQL-Operationen. Wie ein impliziter Return-Code. Abfrage mit `If flag true`. --- ## Karte 14 | Mittel **Q:** Was macht `Breakpoint`? **A:** Haelt die Ausfuehrung an und oeffnet den Debugger - wie `debugger;` in JavaScript. --- ## Karte 15 | Mittel **Q:** Was macht `Begin/End reversible block`? **A:** Definiert Code, der automatisch rueckgaengig gemacht wird, wenn die aeussere Methode endet. Fuer temporaere Aenderungen (Cursor, Fenster-Zustand etc.). --- ## Karte 16 | Mittel **Q:** Was macht `Set main file`? **A:** Setzt die Hauptdatei (Tabelle) fuer Datenoperationen. Legacy-Konzept aus der Omnis-eigenen DB, wird bei SQL-DAMs weniger gebraucht. --- ## Karte 17 | Fortgeschritten **Q:** Was macht `Do inherited`? **A:** Ruft die gleichnamige Methode der Superklasse auf - wie `super.method()` in JS oder `super().method()` in Python. --- ## Karte 18 | Fortgeschritten **Q:** Was macht `Install menu`? **A:** Installiert ein Menu-Objekt in der Menueleiste. Omnis hat ein eigenes Menu-System (nicht HTML-basiert fuer Desktop-Apps). --- ## Karte 19 | Fortgeschritten **Q:** Was macht `Prepare for insert` / `Prepare for edit`? **A:** Bereitet einen Datensatz zum Einfuegen/Bearbeiten vor. Setzt interne Flags und initialisiert Felder. Teil des Omnis-Daten-Workflows. --- ## Karte 20 | Fortgeschritten **Q:** Was macht `Update files`? **A:** Schreibt geaenderte Daten zurueck in die Datenbank. Wie `COMMIT` in SQL + `$flush()`. Teil des legacy Daten-Workflow. --- ## Karte 21 | Basis **Q:** Was macht `Set current list`? **A:** Setzt die "aktive" Liste fuer Listenbefehle. `Set current list lMyList`. Legacy-Ansatz - besser: direkte $-Notation verwenden. --- ## Karte 22 | Mittel **Q:** Was macht `Redraw`? **A:** Erzwingt das Neuzeichnen eines UI-Elements. `Do $cinst.$objs.myField.$redraw()` oder `Redraw {myField}`. Wie `forceUpdate()` in React. --- ## Karte 23 | Mittel **Q:** Was macht `Send to back / Bring to front`? **A:** Aendert die Z-Order von UI-Elementen (welches Element vorne liegt). Desktop-UI-Konzept. --- ## Karte 24 | Fortgeschritten **Q:** Was macht `Do redirect`? **A:** Leitet eine Methode auf ein anderes Objekt um. `Do redirect (lOtherObj, 'methodName')`. Wie Delegation/Proxy in JS. --- ## Karte 25 | Fortgeschritten **Q:** Was macht `Queue` Befehle (Queue set, Queue send, etc.)? **A:** Reiht Events in die Event-Queue ein, die nach der aktuellen Methode verarbeitet werden. Wie `setTimeout(fn, 0)` / `queueMicrotask()` in JS - asynchrone Ausfuehrung. --- ## Spaced Repetition Tracking | Karte | Zuletzt | Naechste | Schwierigkeit | |-------|---------|----------|---------------| | (wird beim Ueben gefuellt) | | | |