edu-senex/edu/content/flashcards/deck-commands.md

163 Zeilen
5,3 KiB
Markdown

# 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) | | | |