Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - String in Prozedurale Typen umwandeln
Aurora1337 - Fr 26.11.10 21:33
Titel: String in Prozedurale Typen umwandeln
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.
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 - 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. ;-)
Xion - Fr 26.11.10 23:45
Wenn du einen String in eine Funktion "umwandeln" willst kannst du das mit if machen
Delphi-Quelltext
1: 2:
| if S='proc1' then proc1; |
Das ganze ist ja auch so gedacht:
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.
BenBE - 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.
bummi - 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
Aurora1337 - 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:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!