[fpc-pascal] Events doesn't work in .lpr ?
Benedikt Schindler
BeniSchindler at gmx.de
Fri Dec 11 11:15:55 CET 2009
Hi,
i wrote a short test programm, to find out how to use the lnet unit.
And now i got some strange compiler messages. (FPC 2.2.2 for i386.)
The source Code is very short. So i just atached the hole cource code.
i got 2 compiler messsages and i think they are directly connected.
Here they are:
SCServer.lpr(46,43) Error: Wrong number of parameters specified for call
to "DoOnReciveCommand"
SCServer.lpr(33,21) Hint: Found declaration:
TSCServer.DoOnReciveCommand(TLSocket)
Now my question:
Why does it say "Found declaration DoOnReciveCommand"? I mean it is
declared 4 lines earlier. where is the difference to the procedure DoRun ?
I think the error is result of the hint.
for all who don't know the lnet unit. in this unit there is this event
declaration :
> { Callback Event procedure for others }
> TLSocketEvent = procedure(aSocket: TLSocket) of object;
any ideas, why there is the hint.... or the error?
greatings
Benedikt
[SourceCode SCServer.lpr]
program SCServer;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils, CustApp, lnet
{ you can add units after this };
type
{ TSCServer }
TSCServer = class(TCustomApplication)
private
TCPServer : TLTcp;
TCPPort : integer;
TCPIp : string;
protected
procedure DoRun; override;
public
constructor Create(TheOwner: TComponent); override;
destructor Destroy; override;
procedure DoOnReciveCommand(aSocket: TLSocket);
end;
{ TSCServer }
procedure TSCServer.DoOnReciveCommand(aSocket: TLSocket);
var
test : string;
begin
aSocket.GetMessage(test);
WriteLn(test);
end;
procedure TSCServer.DoRun;
begin
{ add your program here }
// open TCP Server
TCPServer.OnReceive := DoOnReciveCommand;
TCPServer.Listen(TCPPort,TCPIp);
// Der TCP Server ist Event gesteuert.
// wir können uns deswegen nun komplett auf die
// höhensteuerung konzentrieren.
// stop program loop
Terminate;
end;
constructor TSCServer.Create(TheOwner: TComponent);
begin
inherited Create(TheOwner);
TCPServer := TLTcp.Create(nil);
TCPPort := 23;
TCPIp := LADDR_ANY;
end;
destructor TSCServer.Destroy;
begin
TCPServer.Free;
inherited Destroy;
end;
var
Application: TSCServer;
begin
Application:=TSCServer.Create(nil);
Application.Title:='SCServer';
Application.Run;
Application.Free;
end.
More information about the fpc-pascal
mailing list