Newsgroup: it.comp.lang.delphi
Titolo: [HELP] Creazione (e distruzione) a runtime di TServerSocket

Ciao a tutti.
Mi scuso se l'argomento è già stato trattato, ma cercando e ricercando
non ho trovato nulla.
Sto facendo il porting su Delphi 4 di una piccola applicazione di
controllo remoto (NON è una backdoor ;-)) scritta in VB, e finora è
andato tutto bene...
L'unico problema deriva dalla creazione a runtime del controllo
ServerSocket.
In VB solitamente si crea un controllo "campione" sul form (con un
indice 0) e a runtime si può crearlo con:
load nomecontrollo(contatore)
e distruggerlo con:
unload nomecontrollo(contatore)
Il problema risiede nel fatto che il server non sa a priori QUANTE
connessioni riceverà, quindi nell'evento di avvenuta connessione dovrà
creare un nuovo controllo, per poi distruggerlo alla disconnessione.
Qualcuno mi può dare qualche dritta ?
Scusate se sono stato poco chiaro e grazie =)
Wolf
               __.....__
            .-'         '-.
          .'               '.
         /                   \
        /        |\           \
       ;        |V \_          ;
       |        |  ' \         ;
       ;        )   ,_\        |
       ;       /    |          ;
        \     /      \        /
         \    |       \      /
          '.   \       \   .'
            '-._|       \-'
                | |\     |
        ________/ |_'.   /______
..everything you know is wrong...
[remove numbers for correct e-mail address]

> Scusate se sono stato poco chiaro e grazie =)
In effetti non ho ben capito :-)
Se il tuo problema e' solo quello di creare un TServerSocket a runtime,
allora e' molto semplice, lo crei come un qualsiasi oggetto:
var s:tserversocket;
begin
s:=TServerSocket.Create(Form1);
s.Port:=1234;
s.Active:=true;
Poi puoi collegare gli eventi a delle tue procedure, che devono essere
ovviamente dichiarate con la stessa "firma"
procedure TForm1.NuovaConnessione(Sender: TObject;
  Socket: TCustomWinSocket);
begin
 // codice vario..
end;
s.OnClientConnect := NuovaConnessione;
per distruggere l'oggetto, ti conviene prima spegnere il server:
s.Active:=false;
e poi lo distruggi
s.Free;
Se ti serviva qualcos'altro, allora non ho capito :)
P.S. cambia quella firma prima che qualcuno ti uccida :-)

P.S. cambia quella firma prima che qualcuno ti uccida :-)
OOPPSS !! =))
Pardon... Tolta !
Ciao e grazie
Wolf

siano), il codice che mi hai postato va bene per questo ?
Non devi preoccuparti di questo.
Il TServerSocket gestisce in automatico la molteplicita'
delle connessioni.
--
Andrea Laforgia (mica uno qualunque...)

creare un nuovo controllo, per poi distruggerlo alla disconnessione.
ciao, puoi scorrere tutti componenti del suo owner...
Oggetto := TOggetto.(CompOwner);
ecc....
distruzione di tutti i TOggetto possedutida CompOwner
for i:=1 to CompOwner.Components.Count do
 if CompOwner.Components[i] is TOggetto
 then CompOwner.Components[i].Free;
(scritta al volo ma la strada è questa)
a voler ben vedere se tu ditruggi l'owner si distruggono anche gli
oggetti "posseduti", pero' probabilmente nel tuo caso è una form e
forse non ti piacerebbe distruggere tutta la form ogni volta...
[ps: potresti farti una firma + corta, grazie ;) ...]
Ciao,
Alan Solo



Svelato l'arcano =))
In effetti ieri sera mi sono rispulciato uno dei libri di Cantù e ho
trovato questo particolare che mi sfuggiva.
Grazie a tutti per l'aiuto ! =)
PS. scusate ancora per la signature mastodontica
Wolf