Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Unverständliches Problem mit TClientSocket (https://www.delphipraxis.net/30083-unverstaendliches-problem-mit-tclientsocket.html)

bLume 19. Sep 2004 17:56


Unverständliches Problem mit TClientSocket
 
also ich habe eine Funktion die einfach nur Checken soll ob ein MySQL Server vorhanden ist.

Delphi-Quellcode:
var
  zSocket: TClientSocket;

...

function mysql_check(target : string) : boolean;
begin
    zSocket.Host:=target;
    zSocket.Port:=3306;
    zSocket.Open;
    if zSocket.Active=True then begin
    zSocket.Close;
    result := true;
    end
    else
    result := false;
end;
Beim Compilen bekomme ich nun keinen Error, aber wenn ich die Funktion aufrufe kommt dieser Fehler:

Exception EAccessViolation in Modul iBot.exe bei 00019668.
Zugriffsverletzung bei Adresse 00419668 in Modul 'iBot.exe'. Lesen von Adresse 0
000003C.

ich habe keine ahnung woran es liegt :(
bitte helft mir !!!

mfg

bLume

Pseudemys Nelsoni 19. Sep 2004 18:00

Re: Unverständliches Problem mit TClientSocket
 
hi

vielleicht solltest du das im event onconnect oder so machen.

ausserdem kannst du das:

Delphi-Quellcode:
if zSocket.Active=True then
begin
  zSocket.Close;
  result := true;
end
else
  result := false;
in:

Delphi-Quellcode:
result := zSocket.Active;

umschreiben

Pseudemys Nelsoni 19. Sep 2004 18:01

Re: Unverständliches Problem mit TClientSocket
 
hab das close übersehen... naja kannste sicher auchnoch mit unterbringen...

bLume 19. Sep 2004 18:04

Re: Unverständliches Problem mit TClientSocket
 
hm was soll ich ins event onconnect machen ? versteh das nich :)
bin delphi anfänger :)

muss ich irgendwie das objekt noch initialisieren oder so ? :/
ausser dem hab ich den befehl zSocket.Create weggelassen da er bei mir ein Fehler verursacht.

mfg

bLume

PS: Danke für den anderen Hinweis ^^

alcaeus 19. Sep 2004 18:22

Re: Unverständliches Problem mit TClientSocket
 
Du musst das Socket zuerst erstellen:

Delphi-Quellcode:
zSocket := TClientSocket.Create;
anschließend sollte auch der Rest funktionieren ;)

Greetz
alcaeus

PS: herzlich willkommen in der DP :hi: :dp:

bLume 19. Sep 2004 18:24

Re: Unverständliches Problem mit TClientSocket
 
danke für das herzlich willkommen :))

Delphi-Quellcode:
function mysql_check(target : string) : boolean;
begin
    zSocket := TClientSocket.Create;
    zSocket.Host:=target;
    zSocket.Port:=3306;
    zSocket.Open;
    result := zSocket.Active;
    zSocket.Close;
end;
so ist nun der code ...
Delphi sagt mir: "Nicht genügend Parameter"

Denke das bezieht sich auf das "Create" ...
verstehe das nicht ...

mfg
bLume

sakura 19. Sep 2004 18:25

Re: Unverständliches Problem mit TClientSocket
 
@blume: Editiere doch noch mal obige Beiträge und füge die [delphi] und [/delphi] Tags um Deinen Code ein ;-)

...:cat:...

alcaeus 19. Sep 2004 18:29

Re: Unverständliches Problem mit TClientSocket
 
:oops: Da hab ich glatt den Owner vergessen..

Delphi-Quellcode:
zSocket := TClientSocket.Create(self);
PS: In der OH gibts auch die Hilfe zu den Sockets, die kann dir manchmal weiterhelfen :zwinker:

Greetz
alcaeus

bLume 19. Sep 2004 18:50

Re: Unverständliches Problem mit TClientSocket
 
Delphi-Quellcode:
function mysql_check(target : string) : boolean;
begin
    zSocket := TClientSocket.Create(self);
    zSocket.Host:=target;
    zSocket.Port:=3306;
    zSocket.Open;
    result := zSocket.Active;
    zSocket.Close;
end;
"self" undefinierter bezeichner sagt delphi ://

mfg

bLume

PS: *VERZWEIFEL*

jfheins 19. Sep 2004 18:54

Re: Unverständliches Problem mit TClientSocket
 
Zitat:

Zitat von bLume
"self" undefinierter bezeichner sagt delphi ://

mfg

bLume

PS: *VERZWEIFEL*

Probiers mal mit
Delphi-Quellcode:
zSocket := TClientSocket.Create(Form1); // oder TForm1 oder nil

bLume 19. Sep 2004 18:55

Re: Unverständliches Problem mit TClientSocket
 
nil hat worked !
danke dir vielmals :))

mfg

bLume

bLume 19. Sep 2004 19:09

Re: Unverständliches Problem mit TClientSocket
 
neues prob ... ich nerv euch hier ... :)

Delphi-Quellcode:
function mysql_check(target : string) : boolean;
begin
    zSocket := TClientSocket.Create(nil);
    zSocket.Port:=3306;
    zSocket.Host:=target;
    zSocket.Open;
    if zSocket.Active=true then begin
    result:=true;
    zSocket.Close;
    end
    else
    result:=false;
end;
ich habe ein mysql server laufen und ich habe meine locale ip per parameter übergeben.
nun gibt er aber immer FALSE zurück.
obwohl er auf dem port ein mysql server finden müsste.

mfg

bLume

Ratte 19. Sep 2004 19:29

Re: Unverständliches Problem mit TClientSocket
 
Hi,

lass in mit sleep() ein bisschen warten, das aufbauen der Verbindung dauert auch etwas.

Rattre

jfheins 19. Sep 2004 19:43

Re: Unverständliches Problem mit TClientSocket
 
Ich würde das Warten mit einer Delay-Funktion realisieren ...
DelayDelay

bLume 19. Sep 2004 20:52

Re: Unverständliches Problem mit TClientSocket
 
hm daran lag es nicht ...
funktioniert trotzdem nicht :/
Der Fehler muss woanders liegen ..

mfg

bLume

jfheins 19. Sep 2004 22:14

Re: Unverständliches Problem mit TClientSocket
 
Folgender Code geht (zumindest bei mir) wunderbar.
(Testified under Delphi 7)
Delphi-Quellcode:
procedure Delay(Milliseconds: Integer);
var
  Tick: DWord;
  Event: THandle;
begin
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + DWord(Milliseconds);
    while (Milliseconds > 0) and
          (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      Milliseconds := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;

function mysql_check(target : string) : boolean;
var
 zSocket: TClientSocket;
begin
    zSocket := TClientSocket.Create(nil);
    zSocket.Port:=3306;
    zSocket.Host:=target;
    zSocket.Open;
    Delay (1000);
    result:=zSocket.Active;
    if zSocket.Active then zSocket.Close;
    zSocket.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if mysql_check('127.0.0.1) then Beep;
end;

bLume 20. Sep 2004 10:35

Re: Unverständliches Problem mit TClientSocket
 
hi,

"Undefinierter Bezeichner "Application" sagt Delphi ...
das ganze ist auch keine TForm GUI anwendung sondern eine Konsolen Anwendung

mfg

bLume

bLume 20. Sep 2004 15:22

Re: Unverständliches Problem mit TClientSocket
 
habe das Apllication....
einfach kommentiert und compileirt ...
das Delay funktioniert... nur die mysql_check() wiedern icht :/
ich krieg das nich auf die reihe :/

mfg

bLume


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz