Just nu i M3-nätverket
Gå till innehåll

Console Application.


Ö     .

Rekommendera Poster

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

 

 

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

  • 4 veckor senare...

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...