Just nu i M3-nätverket
Jump to content

Console Application.


Ö     .

Recommended Posts

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils,ScktComp;

procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin

end;


var
server: TServerSOcket;
begin
Server:= TserverSocket.Create(nil);
server.OnClientConnect := CLientConnect;
server.Active := true;
end.

 

Detta fungerar inte! Jag får felmeddelandet:

"Icompitable types: 'method pointer and regular procedure'" på raden "server.OnClientConnect := CLientConnect;" Hur gör jag för att Assigna den på rätt sätt?

 

Tacksam för svar....

/Ex

 

 

Link to comment
Share on other sites

syntaxerror

Hej och Hå,

 

Precis som felmeddelande antyder så vill OnClientConnect ha en metod-pekare och inte en funktions-pekare tilldelad till sig.

Skillnaden är helt enkelt den att en metod är en funktion som tillhör ett objekt. (tekniskt sett kan vi säga att en metod är två pekare och en funktion är en, men vem bryr sig om teknik)

 

Om du gör som i kodexemplet nedan och skapar en klass som du jobbar med så löses detta (ClientConnect som tidigare var en procedure har nu blivit en metod på objektet ssh som är av typen TSimpleSocketHandler)...

 

Hoppas det klarnar lite...

 

/H

 

 

program DemoSocket;

{$APPTYPE CONSOLE}

uses
 SysUtils
,ScktComp

;

type
TSimpleSocketHandler = class(TObject)
private
	FServerSocket: TServerSocket;
protected
	procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
public
	constructor Create(ListenOnCreate : Boolean = False); reintroduce;
end;

{ TSimpleSocketHandler }

procedure TSimpleSocketHandler.ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin

end;

constructor TSimpleSocketHandler.Create(ListenOnCreate: Boolean);
begin
FServerSocket:= TServerSocket.Create(nil);
FServerSocket.OnClientConnect := CLientConnect;
FServerSocket.Active := ListenOnCreate;
end;

var
ssh : TSimpleSocketHandler;


// okej då kör vi...
begin
ssh := TSimpleSocketHandler.Create(True);
end.

 

[inlägget ändrat 2003-04-01 09:12:25 av syntaxerror]

Link to comment
Share on other sites

  • 4 weeks later...

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...