Autor Beitrag
Aurora1337
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 26.11.10 21:33 
Hi,

Ich hab vor Kurzem rausgefunden dass man in Delphi auch Prozeduren als Variablen benutzen kann.

Ich hab schon n bisschen damit herumexperimentiert aber es gelingt mir nicht einen string in eine Prozedur umzuwandeln.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function Calc(X,Y: Integer): Integer;

var F: function(X,Y: Integer): Integer;
    S: string;

begin
  readln(S);
  F := S;
end.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 26.11.10 21:42 
Hallo und :welcome: in der Entwickler-Ecke,

Dass du das nicht hinbekommst könnte daran liegen, dass das in Delphi überhaupt nicht geht. ;-)

_________________
We are, we were and will not be.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Fr 26.11.10 23:45 
Wenn du einen String in eine Funktion "umwandeln" willst kannst du das mit if machen

ausblenden Delphi-Quelltext
1:
2:
if S='proc1' then
  proc1;


Das ganze ist ja auch so gedacht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
function Calc(X,Y: Integer): Integer;
function NoCalc(X,Y: Integer): Integer;

var F: function(X,Y: Integer): Integer;
    S: string;

begin
  readln(S);
  if S='Calc' then
    F := Calc
  else
    F := NoCalc;

  F(X,Y);
end.


Direktes umwandeln geht nicht. Das ganze geht dann sehr schnell in Richtung Parser.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 27.11.10 03:30 
Mit den Mapfile-Utilities von Omorphia kann man da ein wenig tricksen und für nahezu alle Prozeduren die nötigen Adressen auslesen, aber direktes Umwandeln geht nicht. Ansonsten siehe die Antworten der Vorposter. Und für die ODbgMapfile-Funktionen sollte man schon recht gut programmieren können, damit die sauber funzen.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Sa 27.11.10 10:16 
ansonsten könnte man sich die TParser - Komponente anschauen, hiermit geht auch einiges.

EDIT:

ist wohl inzwischen aufgegangen in
TExpressionParser

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Aurora1337 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 27.11.10 21:28 
danke für die schnelle hilfe.

Ich glaube ich werde mich mal ein bisschen mit parsern beschäftigen, dann klappt das auch :wink: