| Autor |
Beitrag |
Terra
      
Beiträge: 307
Windows 7 Ultimate
Delphi® XE3
|
Verfasst: Fr 16.06.06 09:43
Ich habe hier eine Procedure, die sich ja irgendwo selbst erklärt. Allerdingst hab ich da ein gewalltiges Problem:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.BtnConnectClick(Sender: TObject); var i: integer; antwort : array [0..99] of string;
const ServerIP : array [0..1] of string = ('127.0.0.1', '80.70.60.50');
begin for i := 0 to 1 do begin ClientSocket.Host := ServerIP[i]; ClientSocket.Port := 80; clientSocket.Open; if clientsocket.OnConnect(nil, clientsocket.Socket) = true then begin ClientSocket.Close; antwort[i] := 'Connect OK!'; end else begin ClientSocket.Close; antwort[i] := 'Connect Fehler!'; end; sleep(200); end; suiDialogBox(1,' Information','Server 1: ' + antwort[1] + #13 + 'Server 2: ' + antwort[2] ); end; |
Was zum Kuckuck muss ich in der IF Anweisung reinschreiben, damit es funktioniert.
if clientsocket.OnConnect(nil, clientsocket.Socket) = true then ...
Ich bekomme mit dieser Anweisung eine Fehlermeldung. (Invalid Irgendwas)
Kann mir wer das richtig schreiben ???
Terra
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 16.06.06 09:49
Terra hat folgendes geschrieben: | Ich bekomme mit dieser Anweisung eine Fehlermeldung. (Invalid Irgendwas)
Kann mir wer das richtig schreiben ??? |
Wenn du die Fehlermeldung richtig hinschreiben kannst? Sorry, habe heute meinen witzigen Tag.
Ernsthaft: Ich habe jetzt keine Lust Delphi zu starten und beim clientsocket.onconnect nachzusehen, was der Rückgabewert und der Typ ist. Aber das dürfte theoretisch in der OH stehen. Ansonste nschreibe doch einfach die Fehlermeldung genau hin, dann ist meistens schon klar, was da hin muss.
|
|
Terra 
      
Beiträge: 307
Windows 7 Ultimate
Delphi® XE3
|
Verfasst: Fr 16.06.06 10:28
Das ist ja das Problem . .ich weis nicht mehr genau was Delphi geschrieben hat. Habe hier auf Schule kein Delphi und zu Hause kein Internet um schnell mal zu korrigieren. (Tolle kombination)
Die Fehlermeldung bezieht sich auf clientsocket.OnConnect(nil, clientsocket.Socket); um genau zu sein auf das clientsocket.socket.
Dort möchte er ein TCustomWinSocket haben. kann damit aber nichts anfangen.
onConnect(Sender: TObject; Socket:TCustomWinSocket); so in etwa wird onConnect gehändelt.
Terra
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Fr 16.06.06 10:37
Soweit ich dich verstehe, soll das ein IP-Scanner sein?
Aber das OnConnect ereignis solltest du nicht provozieren, um zu schauen ob du verbunden bist.
Du könntest aber im onconnect ereignis mit try except versuchen einen Text an den Server zu senden.
Könnte so ausschaun:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure OnConnect(...); begin try ClientSocket1.Socket.SendText('IP-Scanner Lookup'); antwort[i]:='Connect OK'; except antwort[i]:='Connect Fehler'; end; end;
procedure OnError(...); begin ErrorCode:=0; end; |
i und antwort müsstest du in den Private oder Public bereich setzen um procedure übergreifend damit arbeiten zu können.
MfG Fighter#1
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 16.06.06 10:39
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.BtnConnectClick(Sender: TObject); var i: integer; antwort : array [0..99] of string;
const ServerIP : array [0..1] of string = ('127.0.0.1', '80.70.60.50');
begin for i := 0 to 1 do begin ClientSocket.Host := ServerIP[i]; ClientSocket.Port := 80; clientSocket.Open; if clientsocket.active then begin ClientSocket.Close; antwort[i] := 'Connect OK!'; end else begin ClientSocket.Close; antwort[i] := 'Connect Fehler!'; end; sleep(200); end; suiDialogBox(1,' Information','Server 1: ' + antwort[1] + #13 + 'Server 2: ' + antwort[2] ); end; |
Es gibt Tage ... *kopfschüttel*
OnConnect ist ein Ereignis und keine Methode, bzw. Funktion.
Um zu prüfen, ob die Verbindung besteht, musst du es nur so ändern, wie ich es um Source gemacht habe.
Ich habe die Änderung allerdings jetzt nicht geprüft.
|
|
Terra 
      
Beiträge: 307
Windows 7 Ultimate
Delphi® XE3
|
Verfasst: Fr 16.06.06 10:44
Achso ... danke.
Warum kann ich denn nicht mit den Funktionen (bzw. Ereignisse) arbeiten, wenn se mir aber angeboten werden? Verstehe ich nicht ganz. Hab so weit noch nicht gearbeitet, das mir das bewusst wäre.
Trotzdem vielen Dank für die Hilfen.
Achso @Fighter: Genau diese Version wollte ich ja eigentlich verhindern, da ich damit schwierigkeiten bekommen habe. Bin ja schon selbst erstaunt, das ich die Prozedure von mir fast ganz alleine hinbekommen habe ^^
Terra
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 16.06.06 10:48
Das *kopfschüttel* war auf mich bezogen und nicht auf dich.
Das kann man schon. Nur die Methode, die du verwenden wolltest, ist keine Funktion und hat somit auch keinen Rückgabewert, den du abfragen könntest. Also kannst du es in einer If-Abfrage nicht verwenden. Du kannst es höchstens wie eine Prozedur verwenden.
|
|
Terra 
      
Beiträge: 307
Windows 7 Ultimate
Delphi® XE3
|
Verfasst: Fr 16.06.06 10:58
| Zitat: | | Das *kopfschüttel* war auf mich bezogen und nicht auf dich. |
Wär auch nicht weiter schlimm gewesen. ^^
also wäre es dann möglich wenn ich das onConnect so verwende?
Delphi-Quelltext 1:
| clientsocket.onConnect := geheZuProdedureDieIrgendwasMacht; |
Liege ich da richtig?
Terra
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Fr 16.06.06 11:01
ja
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
Terra 
      
Beiträge: 307
Windows 7 Ultimate
Delphi® XE3
|
Verfasst: Fr 16.06.06 11:08
^^ Danke.
So langsam verstehe ich den unterschied.
Terra
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 16.06.06 12:28
Moin!
Nur der Vollständigkeit halber...
jasocul hat folgendes geschrieben: | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.BtnConnectClick(Sender: TObject); var i: integer; antwort : array [0..99] of string;
const ServerIP : array [0..1] of string = ('127.0.0.1', '80.70.60.50');
begin for i := 0 to 1 do begin ClientSocket.Host := ServerIP[i]; ClientSocket.Port := 80; clientSocket.Open; if clientsocket.active then [...] |
|
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|