![]() |
Eigenen Scripter
Huhu!
Wollte einfach mal aus Spaß bzw. zum Lernen wissen, wie ich eine Funktion bzw. Prozedur in einer Textdatei ausführe. In code.txt steht z.B.
Delphi-Quellcode:
Wie bewerkstellige ich das? Es muss ja nicht sein, dass alle Funktionen, die Delphi zu bieten hat, da drin sind. Ein paar würden reichen wie z.B. OnShow und OnClose und natürlich auch die Befehle wie z.B. ShowMessage('Hallo'). Eine eigene Scriptsprache eben in einer Textdatei.
function OnShow;
begin ShowMessage('Hallo'); Close; end; |
Re: Eigenen Scripter
Hi
Dazu musst du einen Kompiler in deine Anwendung integrieren, aber du wirst es imho nicht schaffen, auf das OnShow-Ereignis der Form so einfach zugreifen zu können. |
Re: Eigenen Scripter
Nope das meine ich nicht, ich will, dass wenn da steht OnShow, dass alles , was bis zu "end function" z.b. steht, ausgeführt wird. also nich die Delphi aufrufe sondern sowas z.B.:
Delphi-Quellcode:
also dass wenn ich zwischen "function OnShow;" und "end function;" auf Message("Hallo") treffe, dass ShowMessage('Hallo') ausgeführt wird.
Function OnShow;
begin Message("Hallo"); end function; |
Re: Eigenen Scripter
Wenn es sich um Pascal-Code handelt, gibt es freie Pascal Compiler, die du integrieren kannst (Suche -> DP/Google), falls du das meinst.
Wenn es eigene, wenige Funktionen sind, kannst du da ja auch schnell selbst was basteln. Musst halt den Code parsen, damit du die Funktionsnamen und die Parameter bekommst (Pos, Copy, Delete, ...) und dann entsprechend in Dlephi umsetzen (Message -> ShowMessage). |
Re: Eigenen Scripter
Genau das meine ich! Die bewerkstellige ich das? also nicht das mit dem freien Pascal Compiler sondern die 2. methode xP
|
Re: Eigenen Scripter
---
Problem wurde gelöst ^^ --- |
Re: Eigenen Scripter
Zitat:
|
Re: Eigenen Scripter
Zitat:
Delphi-Quellcode:
procedure TForm1.Parse;
var SL: TStringList; i, j: Integer; InFkt: Boolean; Temp: string; Pos1, Pos2: Integer; Param1, Param2: string; begin SL := TStringList.Create; try SL.Text := Memo1.Text; // Kannst au die externe datei mit // SL.LoadFromFile laden // Zeilen durchgehen for i := 0 to SL.Count - 1 do begin Temp := ''; Param1 := ''; Param2 := ''; // unnötige Leerzeichen entfernen (nicht performant, aber geht) InFkt := false; for j := 1 to Length(SL[i]) do begin if (SL[i][j] = '(') or (SL[i][j] = ')') then InFkt := not InFkt; if ((not InFkt) and (SL[i][j] <> ' ')) or (InFkt) then Temp := Temp + SL[i][j]; end; // Abfrage auf Msg if Pos('Msg', SL[i]) = 1 then begin // 1. Parameter Pos1 := Pos('(', Temp) + 1; Pos2 := PosEx(',', Temp, Pos1); Param1 := Copy(Temp, Pos1, Pos2 - Pos1); // 2. Parameter Pos1 := Pos2 + 1; Pos2 := PosEx(')', Temp, Pos1 + 1); Param2 := Copy(Temp, Pos1, Pos2 - Pos1); end; if (Param1 <> '') and (Param2 <> '') then Application.MessageBox(PAnsiChar(Param2), PAnsiChar(Param1), 64); end; finally FreeAndNil(SL); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 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