Moin,
ich bräuchte mal eure Hilfe. Ich kenne mich nicht so doll damit aus.
Delphi-Quellcode:
unit uHostSocketAlive;
interface
function IsHostSocketAlive(Hostname:
String; Port : Integer = 29979) : Boolean;
implementation
uses
Windows,
Forms,
ScktComp;
var
Client : TClientSocket;
IsAlive : Boolean;
Finish : Boolean;
procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
IsAlive := TRUE;
Finish := TRUE;
end;
procedure ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
if ErrorCode > 0
then
begin
Client.Close;
IsAlive := FALSE;
ErrorCode := 0;
end;
Finish := TRUE;
end;
function IsHostSocketAlive(Hostname:
String; Port : Integer = 29979) : Boolean;
begin
IsAlive := FALSE;
Finish := FALSE;
Result := FALSE;
//Initialisierung des Objekts (ältere Delphi-Versionen)
Client := TClientSocket.Create(Client);
Client.OnConnect := ClientConnect;
Client.OnError := ClientError;
try
Client.Port := Port;
// Remote Computer mit dem die Verbindung aufgebaut werden soll
Client.Host:= Hostname;
Client.Open;
except
//Im Fehlerfall wieder freigeben (ältere Versionen)
Client.Free;
end;
while Finish = FALSE
do
begin
Application.ProcessMessages;
end;
// Result setzen
Result := IsAlive;
end;
end.
Bei der Zuweisung von Client.OnConnect und Client.OnError kommt es zum Fehler. Denn ich nicht lösen kann.
Meldermeldung:
Zitat:
E2009 Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'
Funktioniert das überhaupt sowie ich es vorhabe? Bzw. was muss ich ändern, dass es klappt? Wollte eigentlich alles in die Funktion "IsHostSocketAlive" packen aber dazu fehlt mir das Wissen.
Als Ergebnis möchte ich gerne aus einer anderen
Unit "IsHostSocketAlive" aufrufen und der Rückgabewert ist TRUE wenn die Verbindung zustande gekommen ist oder FALSE wenn es nicht geklappt hat.
Vielen Dank im voraus. Gruß, Sven