/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
kan man give et object en ekstra variabel?
Fra : Filibaba brusk


Dato : 30-03-01 01:08

Jeg vil meget gerne have at min tcp servers connections hver især har fx. en
ekstra variabel i form af en string eller integer som jeg kan bruge efter
behov.
Er det muligt selv at lave det?



 
 
Jan (30-03-2001)
Kommentar
Fra : Jan


Dato : 30-03-01 10:56

Hej.
"Filibaba brusk" <skod@aha.skod> skrev i en meddelelse
news:k6Qw6.2624$Tj4.212785@news101.telia.com...
> Jeg vil meget gerne have at min tcp servers connections hver især har fx.
en
> ekstra variabel i form af en string eller integer som jeg kan bruge efter
> behov.
> Er det muligt selv at lave det?
>
>
Hvilke komponenter benytter du?
-
Opret et nyt object som dine forbindelser nedarver fra med
forsk. properties, og husk at slette dem igen.




Ove Kjeldgaard (30-03-2001)
Kommentar
Fra : Ove Kjeldgaard


Dato : 30-03-01 16:12

"Filibaba brusk" <skod@aha.skod> wrote:

>Jeg vil meget gerne have at min tcp servers connections hver især har fx. en
>ekstra variabel i form af en string eller integer som jeg kan bruge efter
>behov.
>Er det muligt selv at lave det?
>

Hvad med property'en Tag?
Her er den korte version fra hjælpen:

Applies to

All components

Declaration

property Tag: Longint;

Description

The Tag property is available to store an integer value as part of a component.
While the Tag property has no meaning to Delphi, your application can use the
property to store a value for its special needs.

Med venlig hilsen
------------------
Ove Kjeldgaard
------------------

Thomas P (30-03-2001)
Kommentar
Fra : Thomas P


Dato : 30-03-01 19:33

> Hvad med property'en Tag?

Tag er, som du også selv er inde på, kun til longint's - derfor er den alt
for uholdbar... men man kunne da forestille sig at tag måske bare blev
vedhæftet en slags pointer, som så peger videre til et objekt der har flere
forskellige variabler tilknyttede ?

- Thomas

Ove Kjeldgaard <ok@mail.tele.dk> skrev i en
nyhedsmeddelelse:3ac4a18f.6714658@tnews.inet.tele.dk...
> "Filibaba brusk" <skod@aha.skod> wrote:
>
> >Jeg vil meget gerne have at min tcp servers connections hver især har fx.
en
> >ekstra variabel i form af en string eller integer som jeg kan bruge efter
> >behov.
> >Er det muligt selv at lave det?
> >
>

> Her er den korte version fra hjælpen:
>
> Applies to
>
> All components
>
> Declaration
>
> property Tag: Longint;
>
> Description
>
> The Tag property is available to store an integer value as part of a
component.
> While the Tag property has no meaning to Delphi, your application can use
the
> property to store a value for its special needs.
>
> Med venlig hilsen
> ------------------
> Ove Kjeldgaard
> ------------------



Ove Kjeldgaard (30-03-2001)
Kommentar
Fra : Ove Kjeldgaard


Dato : 30-03-01 20:39

"Thomas P" <blomme@post.com> wrote:

>> Hvad med property'en Tag?
>
>Tag er, som du også selv er inde på, kun til longint's - derfor er den alt
>for uholdbar... men man kunne da forestille sig at tag måske bare blev
>vedhæftet en slags pointer, som så peger videre til et objekt der har flere
>forskellige variabler tilknyttede ?
>
> - Thomas
>

Der blev spurgt om String eller Integer...

.... og kan man ikke stadig gemme en pointer i en longint?

>Ove Kjeldgaard <ok@mail.tele.dk> skrev i en
>nyhedsmeddelelse:3ac4a18f.6714658@tnews.inet.tele.dk...
>> "Filibaba brusk" <skod@aha.skod> wrote:
>>
>> >Jeg vil meget gerne have at min tcp servers connections hver især har fx.
>en
>> >ekstra variabel i form af en string eller integer som jeg kan bruge efter
>> >behov.
>> >Er det muligt selv at lave det?
>> >
>>
>
>> Her er den korte version fra hjælpen:
>>
>> Applies to
>>
>> All components
>>
>> Declaration
>>
>> property Tag: Longint;
>>
>> Description
>>
>> The Tag property is available to store an integer value as part of a
>component.
>> While the Tag property has no meaning to Delphi, your application can use
>the
>> property to store a value for its special needs.
>>
>> Med venlig hilsen
>> ------------------
>> Ove Kjeldgaard
>> ------------------
>
>

PS.: Undskyld det efterhånden lidt lange brev.

Med venlig hilsen
------------------
Ove Kjeldgaard
------------------

Niels (30-03-2001)
Kommentar
Fra : Niels


Dato : 30-03-01 21:22

Just as I expected, Ove Kjeldgaard came up with this:

>Der blev spurgt om String eller Integer...
>
>... og kan man ikke stadig gemme en pointer i en longint?

Tag := Longint(PChar(MinString));

Når man skal have fat på den igen skulle det bare være:

MinString := PChar(Tag);

Utestet.

Niels
--
e-mail: nmartin at iname dot com
ICQ UIN: 50187323
http://www.niller.f2s.com/ - niLLer's pages

Jan (30-03-2001)
Kommentar
Fra : Jan


Dato : 30-03-01 16:40


"Filibaba brusk" <skod@aha.skod> skrev i en meddelelse
news:k6Qw6.2624$Tj4.212785@news101.telia.com...
> Jeg vil meget gerne have at min tcp servers connections hver især har fx.
en
> ekstra variabel i form af en string eller integer som jeg kan bruge efter
> behov.
> Er det muligt selv at lave det?
>
Igen: Hvilken komponent benytter du?



N/A (31-03-2001)
Kommentar
Fra : N/A


Dato : 31-03-01 01:11



Jan (31-03-2001)
Kommentar
Fra : Jan


Dato : 31-03-01 01:11

Hej.
"Filibaba brusk" <skod@aha.skod> skrev i en meddelelse
news:hf7x6.169$ph5.20247@news101.telia.com...
> jeg bruger standard internet TServerSocket. hvor jeg gerne vil have hver
> tilslutning (ServerSocket.Socket.Connections[..]) til at have en ekstra
> variabel, fx. en string
Jeg går ud fra at du har lavet "programmet", så går planlægningen lidt...
-
Nå men det nemmeste i dit tilfælde er som jeg nævnte nok at lave din egen
klasse,
vi kalder den TClientThread.

interface
....

TForm1 = class(TForm) //din oprindelige form
srv: TServerSocket;
private
ClientList: TList;
procedure UpdateClientList;
....

TClientThread = class(TObject) //vores nye klasse til at holde styr på
forbindelserne
ClientStr: string;
ClientIndex: integer;
end;

ClientStr er den ekstra streng du gerne vil have.
ClientIndex er indekset i vores TList som indeholder objekterne
(forbindelserne).
Så kan vi holde styr på forbindelserne og din(e) streng(e).

Tilføj i din forms FormsCreate

procedure TForm1.FormCreate(Sender: TObject);
begin
ClientList:= TList.Create;
...
end;

Når klienten tilslutter sig server objektet opretter vi en ny instans
af vores egen klasse og tilføjer den til vores liste inkl. udfylder din
ekstra streng.

procedure TForm1.srvClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var
Client: TClientThread;
begin
Client:= TClientThread.Create; //vores egen klasse
Client.ClientStr:=
format('Client # %d', [ClientList.Count]); //Din brugerdefinerede
string
Client.ClientIndex:= ClientList.Count; //her får klienten et index i
vores liste
Socket.Data:= Client; //her tilføjer vi forbindelsens data pointer vores
klasse
ClientList.Add(Client); //og tilføjer den til vores liste
end;

Når klienten disconnecter skal klassens selvfølgelig slettes igen og fjernes
fra vores liste.

procedure TForm1.srvClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
var
Client: TClientThread;
begin
Client:= Pointer(Socket.Data); //hent vores klasse fra klienten der
disconnecter
ClientList.Delete(Client.ClientIndex); //slet den fra vores liste
Client.Free;
Socket.Data := nil;
UpdateClientList; //dette er nødvendigt for at indekseringen forbliver
korrekt i vores liste
end;

procedure TForm1.UpdateClientList;
var
Client: TClientThread;
Idx: integer;
begin
for Idx:= 0 to pred(ClientList.Count) do
begin
Client:= ClientList.Items[Idx];
Client.ClientIndex:= Idx;
end;
end;

Ovenstående var et lille eks. på hvordan det _kan_ gøres.
Håber du kan bruge det, det virker i hvertfald.

Mvh.
Jan Pedersen
JPSoft DK
http://www.jpsoft.dk












Stig Johansen (31-03-2001)
Kommentar
Fra : Stig Johansen


Dato : 31-03-01 05:51

Hej.

"Jan" <the@beast.himself> wrote in message
news:6h9x6.4075$o4.167118@news010.worldonline.dk...
> Hej.
> "Filibaba brusk" <skod@aha.skod> skrev i en meddelelse
> news:hf7x6.169$ph5.20247@news101.telia.com...
> > jeg bruger standard internet TServerSocket. hvor jeg gerne vil have hver
> > tilslutning (ServerSocket.Socket.Connections[..]) til at have en ekstra
> > variabel, fx. en string
> Jeg går ud fra at du har lavet "programmet", så går planlægningen lidt...
> -
[klip en masse kode]

Der findes rent faktisk indbyggede funktioner til at styre dette.
1) Brug OnGetThread til at kreere din egen tråd.
2) Brug OnThreadEnd til at afslutte tråden.
3) Din egen Thread skal nedarves fra TServerClientThread

--
Med venlig hilsen/Best Regards
Stig Johansen - stig@w3data.dk
W3 Data - mailto@w3data.dk





Jan (31-03-2001)
Kommentar
Fra : Jan


Dato : 31-03-01 08:30

Hej
"Stig Johansen" <stig@w3data.dk> skrev i en meddelelse
news:9a3nkc$6ii$1@sunsite.dk...
> Hej.
>
> "Jan" <the@beast.himself> wrote in message
> news:6h9x6.4075$o4.167118@news010.worldonline.dk...
> > Hej.
> > "Filibaba brusk" <skod@aha.skod> skrev i en meddelelse
> > news:hf7x6.169$ph5.20247@news101.telia.com...
> > > jeg bruger standard internet TServerSocket. hvor jeg gerne vil have
hver
> > > tilslutning (ServerSocket.Socket.Connections[..]) til at have en
ekstra
> > > variabel, fx. en string
> > Jeg går ud fra at du har lavet "programmet", så går planlægningen
lidt...
> > -
> [klip en masse kode]
>
> Der findes rent faktisk indbyggede funktioner til at styre dette.
> 1) Brug OnGetThread til at kreere din egen tråd.
> 2) Brug OnThreadEnd til at afslutte tråden.
> 3) Din egen Thread skal nedarves fra TServerClientThread
>
> --
> Med venlig hilsen/Best Regards
> Stig Johansen - stig@w3data.dk
> W3 Data - mailto@w3data.dk

Men kun hvis han benytter blocking threads, altså ServerType =
stThreadBlocking.
Den anden (non-blocking) er stNonBlocking.

/Jan





Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste