![]() |
Kleine Scripts ermöglichen
Hi !
Ich code gerade für einen Freund eine DruckerPort Steuerung. Damit sollen dann LEDs angesteuert werden. Klappt soweit auch schon ganz gut. Nun will ich ihm aber ermöglichen die Reihenfolge, in der die LEDs blinken, selbst fest zu legen. Ich dachte ich könnte hierfür ne sehr kleine Scripting Engine einbauen. Also dass er dann z.b. ein Memo hat und dort dann "AN1, AUS1, AN2, AN2" z.b. eingibt und das dann dazuführt, dass Pin1 an geht, Pin1 ausgeht etc. Doch leider hab ich grad keine Vorstellung wie ich das umsetzen könnte. Kann mir da vielleicht jemand auf die Sprünge helfen ? |
Re: Kleine Scripts ermöglichen
Da faellt mir spontan
![]() Einen Interpreter fuer das Format zu schreiben ist simpel. Das habe ich schon mal gemacht. Der einzige Unterschied fuer dich ist das du nur ein einzeiliges Display hast. |
Re: Kleine Scripts ermöglichen
Zitat:
Ich glaube das ist auch ohne Komponente gar nicht so schwer, nur ich komm einfach nicht drauf ;) |
Re: Kleine Scripts ermöglichen
Da gibt es auch nur Blinkenlights-Filme zum runterladen.
Warum soll man sich ein neues Format einfallen lassen wenn es schon eines gibt? Das sind schlichte Textdateien. Anschauen und verstehen. |
Re: Kleine Scripts ermöglichen
:gruebel: ich will mir auch kein neues Format einfallen lassen, sondern will einfach nur fragen ob jemand weiss wie man das mit hilfe eines einfachen Memo realisieren kann.
|
Re: Kleine Scripts ermöglichen
Hi,
du hast ein TStrings und möchtest die Einträge abarbeiten? Warum nicht ganz stupides Matching? Du definierst einfach alle Befehle, die möglich sind (sollten hier nicht soviele sein). Sagen wir mal AN1..AN4, AUS1..AUS4 und Delay(xxx). Dann lädst du einfach dieses TStringsObjekt und gehst jede Zeile einzeln durch, schreib dir eine Methode die den String parst und eine die über diese Liste iteriert
Delphi-Quellcode:
Ist nicht das Eleganteste, dürfte dir aber vielleicht schon reichen.
procedure parseString(command : String);
begin if command = 'AN1' then begin ... end else if command = 'AUS1' then begin end ... end; procedure start; var i : Integer; begin if self.Memo.Lines.Count > 0 then begin for i := 0 to self.Memo.Lines.Count - 1 do begin parseString(self.Memo.Lines.Strings[i]); end; end; end; Gruß Der Unwissende |
Re: Kleine Scripts ermöglichen
wow das is ja einfach nur Genial !!
BIG THX leudde :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz