Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi ClientSocket Problem (https://www.delphipraxis.net/9943-clientsocket-problem.html)

ddcool 8. Okt 2003 12:34


ClientSocket Problem
 
Hi Leute ich habe da mal ne Frage.
Ich wollte ein Proggy schreiben, was eine varierbare Anzahl von Connections zu einem Server aufbaut, und zwar gleichzeitig.
Nun habe ich alles soweit fertig nur mit dem erstellen neuer TClientSocket Komponenten wärend des betriebes hakert es:

Delphi-Quellcode:
var
  show: Tshow;
  newclient: TClientSocket;
  kompo: TClientSocket;
  namec: String;

implementation

{$R *.dfm}

procedure connect;
var
  null: Integer;
begin
  for null := 0 to StrToInt(show.anzahl.Text) do
  begin
  namec := 'clientkompo'+IntToStr(null);
  kompo := newclient.Create(kompo);
  kompo.Name := namec;
  kompo.Port := StrToInt(show.portt.Text);
  kompo.Host := show.adr.Text;
  kompo.Open;
  end;
end;
was ist daran falsch????
BITTE GENAUE LÖSUNGSBESCHREIBUNG UND WENN ES GEHT EINEN ÜBERARBEITETEN QUELLTEXT

THX Basti

ddcool 8. Okt 2003 12:55

Re: ClientSocket Problem
 
Achja ich habe es jetzt hinbekommen, das sich alle Kompos öffnen.
Aber wie kann ich sie wieder schliessen.

Christian Seehase 8. Okt 2003 13:10

Re: ClientSocket Problem
 
Moin Basti,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Diese Zeile
Code:
kompo := [color=red]newclient[/color].Create([color=red]kompo[/color]);
müsste so aussehen:
Code:
kompo := [color=red]TClientSocket[/color].Create([color=red]Show[/color]);
Du willst ja schliesslich eine Instanz der Klasse TClientSocket erstellen.
Ausserdem musst Du einen gültigen Owner angeben, oder nil.
Nimmst Du nil, musst Du selber dafür sorgen, dass die Kompo wieder freigegeben wird, anderenfalls wird sie automatisch freigegeben, wenn der Owner freigegeben wird.

Dann ist mir nicht klar, warum Du diese Zeile hier hast:
Delphi-Quellcode:
namec := 'clientkompo'+IntToStr(null);
Du kannst es schliesslich auch so machen:
Delphi-Quellcode:
kompo.Name := 'clientkompo'+IntToStr(null);
Ausserdem solltest Du Dir auch mal Gedanken darum machen, wie Du Bezeichner benennst.
Show ist eine Methode, null ist eine vordefinierte Variable (einfach mal mit dem Caret draufgehen und F1 drücken).

Zitat:

Zitat von ddcool
BITTE GENAUE LÖSUNGSBESCHREIBUNG UND WENN ES GEHT EINEN ÜBERARBEITETEN QUELLTEXT

Ach ja, warum schreist Du denn so?
Die Verwendung von Grossbuchstaben wird als schreien angesehen, was nicht unbedingt immer gut ankommt. ;-)

ddcool 8. Okt 2003 13:23

Re: ClientSocket Problem
 
Danke für die Tipps, und sry wegen dem großen schreiben.

Kannst du mir vielleicht sagen. Wie ich die TClientSocket Kompos wieder schliesse.

Christian Seehase 8. Okt 2003 13:31

Re: ClientSocket Problem
 
Moin Basti,

da hättest Du prinzipiell zwei Möglichkeiten.
  1. Du speicherst Dir die Komponenten in einem eigenen Array of TClientSocket, so dass Du ausserhalb der Prozedur in dem Du sie erzeugst wieder darauf zugreifen kannst.
  2. Du benutzt das, sowieso vorhandenen, Array of Components des angegebenen Owners, in dem die Komponenten gespeichert werden. Heraussuchen kannst Du sie dann mit Hier im Forum suchenFindComponent (einen Namen gibst Du ihnen ja.)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 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