Autor Beitrag
theromi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Fr 10.10.08 22:18 
Hi,

ich habe eine Klasse. Diese Klasse hat verschiedene Prozeduren, die mit Code gefüllt werden sollen, und verschiedene Variabelen, auf die dieser Code zugreifen können muss. Das Problem ist, dass dies zur Laufzeit geschehen soll: Der Inhalt der Prozeduren soll aus einer Textdatei ausgelesen werden (beim create der Klasse) und dann immer ausgeführt werden, wenn ich diese Prozedur im anderen Code ansteuere. Wie macht man sowas? Geht sowas überhaupt in der Weise, oder muss ich mich da anderen Methoden bedienen?

Danke schonmal,
Roman
LexXis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 170
Erhaltene Danke: 3



BeitragVerfasst: Fr 10.10.08 22:29 
Mach dich mal über RemObjects Pascal Script schlau, sollte ziemlich genau das sein, was du suchst.

mfg
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 10.10.08 22:35 
Da fallen mir zwei Dinge ein: Erstens DLLs, allerdings müssen diese natürlich kompilierten Code enthalten, nicht einfach Quelltext in einer Textdatei.
Zweitens Skripte, da gibt es einige Engines, zum Beispiel diese: // EDIT: das ist die von user profile iconLexXis angesprochene
www.remobjects.com/p...1-BA89-EEBBE7E302E6}
Weitere findest du hier:
www.torry.net/pages.php?id=280
theromi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Fr 10.10.08 22:53 
Wow! Danke! Das scheint wirklich einfacher, als ich zuerst dachte. Das scheint wirklich schon der ganze Zauber zu sein:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
  Messages: string;
  compiled: boolean;
begin
  ce.Script.Text := 'begin end.';
  Compiled := Ce.Compile;
  for i := 0 to ce.CompilerMessageCount -1 do
    Messages := Messages +
                ce.CompilerMessages[i].MessageToString +
                #13#10;
  if Compiled then
    Messages := Messages + 'Succesfully compiled'#13#10;
  ShowMessage('Compiled Script: '#13#10+Messages);
  if Compiled then begin
    if Ce.Execute then
      ShowMessage('Succesfully Executed')
    else
      ShowMessage('Error while executing script: '+
                  Ce.ExecErrorToString);
  end;
end;