AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ScriptingEngine?

Ein Thema von CalganX · begonnen am 26. Mai 2003 · letzter Beitrag vom 29. Mai 2003
Antwort Antwort
Seite 1 von 3  1 23      
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

ScriptingEngine?

  Alt 26. Mai 2003, 15:31
Hi,
ich suche derzeit nach einer Art ScriptingEngine...
Ich habe Scripte, die ungefähr so aussehen:
Code:
findwindow "wndname" $1      // findet das Fenster
findchild $1 "pagecontrol" $2   // findet das pagecontrol
findchild $2 "label" $3      // findet das Label
getnumber $3 "Nr. " " um" $4   // findet die Nummer x heraus, x steht in $4
findchild $2 "btn".$4 $5
sendmessage bm_click $5

END
($x sind Variablen; alles andere Strings bzw. Anweisungen; ist eines der komplizierteren... )

Nun frage ich mich, wie man sowas machen kann, dass man das ganze sozusagen interpretiert.
Muss ich das ganze etwa per copy, delete, ... machen??? Dann würde ich glatt durchdrehen!

Naja... das Problem sind da eher Knackpunkte wie die zusammensetzung eines Strings und einer Variable (z.B. "btn".$4).

Gibt es irgendwo so eine Art "Vorlage"?
Oder habt ihr eine Idee, wie man sowas machen kann?

Chris
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

mit einer Idee kann ich dienen

Da es sich offensichtlich um ein sequentiell abzuarbeitendes Script handelt, könntest Du es so machen:

Voraussetzungen:
  • Das Script steht in einer Stringliste.
  • Du hast eine Liste der vordefinierten Schlüsselworte (z.B. FindWindow, FindChild...)
  • Du hast eine, am Anfang leere, Liste, in der die Variablen gespeichert werden

Jetzt kannst Du die Liste in einer Schleife durchgehen, und die einzelnen Zeilen in ihre Bestandteile zerlegen, wobei als erstes wohl immer ein Schlüsselwort steht (hoffentlich ), gefolgt von Parametern, in Abhängigkeit des Schlüsselwortes.

Als Beispiel mal Deine erste Zeile:
Schlüsselwort findwindow. Jetzt weisst Du, dass als nächstes der Name es Fensters erscheinen muss, und dann der Name einer Variablen, in der das Ergebnis gespeichert werden soll.
Dann kannst Du die Funktion ausführen, und das Ergebnis in der Variablenliste speichern.
Soll der Wert einer Variablen verwendet werden, muss dieser dann aus der Liste ausgelesen werden. Ggf. kann die Liste auch eine einfache Stringliste in der Form Variablenname=Wert sein.
Für eventuelle vordefinierte Konstanten (bm_click) wäre eine entsprechende weitere Liste ganz sinnvoll.
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
chris

Registriert seit: 24. Mai 2003
Ort: Düsseldorf
196 Beiträge
 
Delphi 2009 Professional
 
#3
  Alt 26. Mai 2003, 16:03
hi,

guck doch mal hier nach -> Innerfuse Pascal Script 3
Chris
D2009.4 | Vista SP2 x32
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4
  Alt 26. Mai 2003, 16:11
Hi,
@Christian: also so, oder so ähnlich, hatte ich mir das auch schon gemacht, allerdings überlegte ich nach einer Möglichkeit das ohne es so kompliziert zu machen (wobei man sagen muss, dass deine Möglichkeit viel einfacher ist, als ich sie mir ausgedacht hab).
[EDIT]
Da fällt mir: das Problem ist, dass für jeden Befehl ich eine if-Abfrage machen muss, weil ja jeder Befehl eine andere Struktur hat und andere Befehle verwendet.
Also zum Beispiel sendmessage verlangt andere Parameter, als findwindow. Auch die Anzahl ist unterschiedlich.

Das Problem ist z.B. auch, dass Zusammensetzen (wie gesagt: ein String.eine Variable). Wie bitte soll ich das anstellen?
[/EDIT]

Deswegen...
...@chris: werde mir das mal ansehen. Allerdings scheint mir das schon wieder ein wenig zu aufwendig. Aber ich habe jetzt nur mal einen Blick drauf geworfen!

Chris
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

je komplizierter/flexibler die zu verarbeitende Sprache ist, umso komplizierter wird halt auch die Verarbeitung.

Solange sich das ganze sequentiell abarbeiten lässt und dabei die einzelnen Funktionen und Paramter leicht zu trennen sind, ist die Umsetzung nicht ganz so schwierig.

Sobald Du mit bedingtem Programmablauf (womöglich verschachtelt) und Schleifen anfängst wird's merklich komplexer.
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
Christian Seehase
(Co-Admin)

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

Du kannst doch den Wert einer Variablen aus der vorgeschlagenen Tabelle auslesen (Eigenschaft z.B. sWert := slVariablen.Values['$4'].

Diesen verbindest Du dann mittels + mit der Konstanten.
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
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#7
  Alt 26. Mai 2003, 16:24
Mit Schleifen usw. will ich gar nichts anfangen...
Denn eigentlich bringen mir Schleifen nichts.

Ich habe gerade dieses Innerfuse-Teil heruntergeladen. Also wirklich begeistert bin ich nicht. Nicht einmal eine install.txt.

Naja... werde das ganze mal versuchen.

Chris
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#8
  Alt 26. Mai 2003, 16:25
Stimmt... Warum mach ich die Sache eigentlich selber so scher???

Chris
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#9
  Alt 26. Mai 2003, 18:58
Hi,
ich hab gerade bei der ganzen Sache ein Problem (die Klasse an sich funktioniert wunderbar):
Ich bräuchte eine Funktion, die mir den n. Parameter liefert. Also z.B.:
Code:
findwindow "test window" $1
dann ist findwindow der 0., test window der 1. und $1 der 2.
Hat jemand dafür eine Funktion parat?

Ich habe im Moment nämlich keine Idee, wie ich das machen soll, dass Problem ist halt die Sache mit den Strings...

Chris
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#10
  Alt 26. Mai 2003, 19:04
Na ja, im Prinzip werden die Parameter durch Leerzeichen getrennt. Nur wenn vor dem Leerzeichen eine ungerade Anzahl an Gänsefüßchen steht, dann ist das Leerzeichen kein Trennoperator. Also Zeichen für Zeichen durchgehen, zusätzlich boolsche Variable für String oder nicht und falls kein String, trennen am Leerzeichen.
Alternativ dazu die Anzahl der Gänsefüßchen vor dem Leerzeichen ermitteln: Falls ungerade -> Leerzeichen ignorieren, ansonsten trennen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz