Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Prozedur aus einer Prozedur aufrufen?
bms - Sa 20.03.04 18:31
Titel: Prozedur aus einer Prozedur aufrufen?
Wie kriege ich es hin einer Prozedur mitzuteilen welche Prozedur sie aufrufen soll. Hier ein Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure aaa; begin ShowMessage('aaa'); end;
procedure bbb; begin ShowMessage('bbb'); end;
procedure ccc(Hier_Prozedur_Name); begin ??? end;
procedure TForm1.Button1Click(Sender: TObject); begin ccc(aaa); end; |
Verstanden? Ich will aus Button1 Prozedur die Prozedur ccc aufrufen und ihr per Parameter sagen welche Prozedur sie ihreseits benutzen soll. Ich glaube, daß sowas geht. Nur wie? Und wenn es geht, geht es auch mit Funktionen?
Delete - Sa 20.03.04 18:39
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure ccc(ProcName: String); begin if ProcName = 'aaa' then aaa else if ProcName = 'bbb' then bbb else ShowMessage('Unbekannte Prozedur'); end; |
Einfacher gestalltet es sich wenn du einen Integer übergibst, dann kannst du die Verzweigung mit
case machen.
Christian S. - Sa 20.03.04 18:41
Oder so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| type myProz = procedure;
implementation
procedure aaa; begin ShowMessage('aaa'); end;
procedure bbb; begin ShowMessage('bbb'); end;
procedure makeItSo(temp : MyProz); begin temp; end;
procedure TForm1.Button1Click(Sender: TObject); begin makeItSo(aaa); end; |
bms - Sa 20.03.04 21:49
@Luckie
Das wäre ein wenig zu einfach gewesen, aber danke für den Versuch.
@Peter Lustig
Genau das habe ich gesucht. Ich dachte zuerst, dass es das Ding mit dem @, also der Callbackfunktion sein wird, aber das ist auch ok.
Raphael O. - Di 06.04.04 23:48
sodele... vom prinzip her hat mir das geholfen und funkioniert auch...
mein Problem ist allerdings noch etwas komplexer...
und zwar ist bei mir "makeitso" eine Prozedur einer Klasse 1
und aaa eine Prozedur einer anderen Klasse 2
hat irgendwer ne ahnung, wei man das hinbekommen kann? *hoff*
maximus - Mi 07.04.04 10:57
Wie siehts mit...
Delphi-Quelltext
1: 2:
| type myMethod = procedure of object; |
...aus?
Raphael O. - Mi 07.04.04 11:15
weiterhin die Fehlermeldung
| Zitat: |
| [Fehler] un_menu.pas(167): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur' |
:(
EDIT:
nein, es funktioniert doch!! DAnke an alle!
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!