Entwickler-Ecke
Windows API - NonVCL-Programm: Procedure zur Laufzeit zuweisen
pmw - Do 29.05.03 12:25
Titel: NonVCL-Programm: Procedure zur Laufzeit zuweisen
Hallo!
Wie kann ich der Komponente HTTPServer.OnCommandGet die Procedure "CommandGet" zuweisen? Delphi bringt immer die Fehlermeldung "Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'". Die Parameter in der Procedure sind auf jeden Fall richtig.
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: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| program ZeitServer;
uses Windows, Messages, IdBaseComponent, IdComponent, IdTCPServer, IdCustomHTTPServer, IdHTTPServer;
{$R *.res}
var HTTPServer: TIdHTTPServer; msg: TMsg;
procedure CommandGet(AThread: TIdPeerThread; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); begin
AResponseInfo.ContentText := '<html><head><title>Hallo!</title></head><body><h1>' + ARequestInfo.Command + '</h1></body></html>';
end;
begin
HTTPServer := TIdHTTPServer.Create(nil);
with HTTPServer do begin
Name := 'IdHTTPServer1Execute'; Bindings.Add; Bindings.Items[0].IP := '0.0.0.0'; Bindings.Items[0].Port := 44; DefaultPort := 44; Greeting.Text.CommaText := '<body><h1>Herzlich Willkommen!</h1>Mein 1. Server ...</body>'; Greeting.TextCode := 'text/html'; OnCommandGet := CommandGet; Active := True;
end;
while GetMessage(msg,0,0,0) do begin TranslateMessage(msg); DispatchMessage(msg); end;
ExitCode := msg.wParam;
end. |
Viele Grüße
Martin Winandy
tommie-lie - Do 29.05.03 19:20
Mal so ins Blaue reingeraten:
Delphi-Quelltext
1:
| OnCommandGet := @CommandGet; |
pmw - Do 29.05.03 20:14
Dann bekomme ich leider diese Fehlermeldung:
Delphi-Quelltext
1:
| Inkompatible Typen: 'TIdHTTPGetEvent' und 'Pointer' |
MSCH - Do 29.05.03 22:28
hi so einfach geht das nicht. das eine ist eine stinknormale procedure, das andere eine innerhalb einer Klasse/interface. Dat jeht so nich.
Die beste methode wäre, die Klasse mit dieser procedure zu ergänzen bzw. overwriten.
grez
msch
pmw - Do 29.05.03 23:12
Wie geht das? Muss ich die Prozedur in den Quelltext der Indy9-Komonente schreiben???
Motzi - Fr 30.05.03 07:55
Es geht mit einem kleinen Trick:
Delphi-Quelltext
1:
| @OnCommandGet := @CommandGet; |
tommie-lie - Fr 30.05.03 20:18
na, da war ich doch nah dran...
maxk - Fr 30.05.03 21:14
| tommie-lie hat folgendes geschrieben: |
| na, da war ich doch nah dran... |
Knapp daneben ist eben auch vorbei - überigens wollte ich diese Frage auch gerade stellen.
:idea: Jetzt kann ich so tun, als hätte ich es schon gewust...
:flüster: Danke
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!