Thema: Delphi ScriptingEngine?

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#22
  Alt 28. Mai 2003, 22:26
Moin Chris,

das mit dem Zusammensetzen hatten wir doch schon mal weiter oben im Thread?


Wenn es "string".$4 und "string$4" geben soll (was soll eigentlich der Punkt? Ersatz für +?), müssest Du noch eine Möglichkeit finden, eine Variable in einem String als solche zu erkennen. Das liesse sich dann z.B. so machen wie in C, mit Hilfe eines Escape Characters. In C dient dazu der \. Soll dieser dargestellt werden muss man ihn doppelt schreiben.
(siehe z.B. auch Dateipfade in REG Dateien, da hat MS es auch so übernommen (warum eigentlich?)).

Statt beide Möglichkeiten ins Auge zu fassen, halte ich es für sinnvoll, wenn Du Dich für eine entscheidest. Leichter umsetzen lassen dürfte sich die erste. Ich empfinde sie auch als übersichtlicher.

Um so eine Zeile zu ermöglichen, musst Du Dir Regeln einfallen lassen, was alles auf was folgen darf, und was für eine Bedeutung das dann hat. Deshalb halte ich es für empfehlenswert beim Aufspalten einer Kommandozeile den einzelnen Teilen eine Kennung mitzugeben, soll heissen:
Beim Aufspalten werden die Bestandteile in, sogenannten, Token gespeichert. Dazu kannst Du einfach einen Record erstellen, der zwei Felder enthält. Eines für die Kennung um was es sich handelt (Schlüsselwort, Variable, Stringkonstante, Operator ...), und eines das das zugehörige Attribut enthält (findwindow, $1...) wobei natürlich bei festliegenden Attributwerten (z.B. Schlüsselworten) das Eintragen des Attributes entfallen kann.
Da Du Variablen verwenden willst wirst Du auch noch eine Variablenliste brauchen, in der Du dann die aktuellen Wert merken kannst.

Was nun die Regeln angeht:
Du musst prüfen, was auf (z.B.) FindWindow folgt, und ob es folgen darf (ggf. Fehler). Stösst Du auf eine Stringkonstante, so kann der Parameter damit komplett sein, oder aber ein . (+) folgen. Ist letzteres der Fall, so muss entweder ein Weiterer String folgen, oder eine Variable usw.

Ich hoffe, dass alles war einigermassen verständlich.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat