/ 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
Liste af classer
Fra : Harald


Dato : 02-02-05 13:52

Hej

Bruger Delphi 7 og windows
Jeg har lavet en klasse som skal indeholde en liste af en anden klasse
således at man kan tilføje klasser sådan:

Først oprettes "hoved" klassen:
HKsip:=THKsip.create; // ingen problemer her

Der efter skal der så oprettes en eller flere klasser af typen NetWork

Hvordan gør jeg det?

with HKsip.NetWorks.Add do
// Add skal så retunere en klasse af typen NetWork
begin
DisplayName:='Viggo';
NetWorkName:='Musimi';
Server:='musimi.dk';
Username:='Viggo';
Password:='****';
end;

Man skal så derefter kunne få fat i og slette de enkelte NetWork klasser
sådan:
HKsip.NetWorks.Items[0].Password:='blabla'; // ændre pass
HKsip.NetWorks.Items[0].Free; // sletter klassen

Det er jo på denne måde mange andre komponenter virker på, men hvordan gør
de?
Jeg har kikket på TClassList, TList og andre men er i tvivl om hvilke jeg
skal bruge og hvordan de skal bruges.

Mvh
HK



 
 
Ukendt (02-02-2005)
Kommentar
Fra : Ukendt


Dato : 02-02-05 15:41

"Harald" <nomail@noname.dk> wrote in message
news:4200cd0f$0$33729$edfadb0f@dread16.news.tele.dk...

> Jeg har kikket på TClassList, TList og andre men er i tvivl om hvilke
jeg
> skal bruge og hvordan de skal bruges.

TObjectList eller TList skulle begge kunne bruges. TObjectList ejer
objekterne og frigør dem, når ObjectList frigøres, hvorimod man selv
skal gøre det med TList.

TClassList har jeg aldrig anvendt.

hilsen
Uffe


Harald (02-02-2005)
Kommentar
Fra : Harald


Dato : 02-02-05 16:06

"Uffe Kousgaard" <look_at_www.routeware.dk> skrev i en meddelelse
news:4200e66e$0$168$edfadb0f@dtext01.news.tele.dk...
> "Harald" <nomail@noname.dk> wrote in message
> news:4200cd0f$0$33729$edfadb0f@dread16.news.tele.dk...
>
>> Jeg har kikket på TClassList, TList og andre men er i tvivl om hvilke
> jeg
>> skal bruge og hvordan de skal bruges.
>
> TObjectList eller TList skulle begge kunne bruges. TObjectList ejer
> objekterne og frigør dem, når ObjectList frigøres, hvorimod man selv
> skal gøre det med TList.

Men ingen af de 2 kan bruges på den måde jeg gerne vil, deres Add metode kan
ikke det jeg vil.

/HK



Nicolai Hansen (03-02-2005)
Kommentar
Fra : Nicolai Hansen


Dato : 03-02-05 20:42

> > TObjectList eller TList skulle begge kunne bruges. TObjectList ejer
> > objekterne og frigør dem, når ObjectList frigøres, hvorimod man selv
> > skal gøre det med TList.
>
> Men ingen af de 2 kan bruges på den måde jeg gerne vil, deres Add metode
kan
> ikke det jeg vil.

Deres Add metode returnerer (desværre) ikke en pointer til det nye objekt,
og den danner heller ikke objektet automatisk.
Det du vil opnå er en forkortet udgave af

var
newNetWork: TNetWork;
begin
...
newNetWork:=TNetWork.Create;
HKsip.NetWorks.Add(newNetWork);
with newNetWork do
begin
DisplayName:='Viggo';
...
end;
end;

Nu synes jeg personligt at ovenstående kode er ganske fin til formålet, men
hvis det ønskes kortere kan det gøres således:

begin
with HKsip.NetWork..items[HKsip.NetWork.Add(TNetWork.Create)] as TNetWork
do
begin
DisplayName:='Viggo';
...
end;
end;

hvor HKsip.NetWork er af typen TList (evt TObjectList).
Personligt ville jeg dog foretrække den øverste version

Et ANDET alternativ kunne være at lave TNetWork's creator så den spiser dine
argumenter...

TNetWork.Create(ADisplayName: String; ANetWorkName: String; AServer: String;
AUsername: String; APassword: String);
begin
DisplayName:=ADisplayName;
...
end;

og så bare bruge

HKsip.NetWork.Add(TNetWork.Create('Viggo', 'Musimi', 'musimi.dk', 'Viggo',
'****'));

(.Create kan selvfølgelig overrides til at tage forskellige antal/typer af
argumenter)

/Nic



Harald (03-02-2005)
Kommentar
Fra : Harald


Dato : 03-02-05 23:01

"Nicolai Hansen" <nic@aub.dk> skrev i en meddelelse
news:42027eab$0$33711$edfadb0f@dread16.news.tele.dk...
>> > TObjectList eller TList skulle begge kunne bruges. TObjectList ejer
>> > objekterne og frigør dem, når ObjectList frigøres, hvorimod man selv
>> > skal gøre det med TList.
>>
>> Men ingen af de 2 kan bruges på den måde jeg gerne vil, deres Add metode
> kan
>> ikke det jeg vil.
>
> Deres Add metode returnerer (desværre) ikke en pointer til det nye objekt,
> og den danner heller ikke objektet automatisk.
> Det du vil opnå er en forkortet udgave af

<klip>

Jeg kikkede lidt i koden til en af Indys komponenter og fandt ud af at
TOwnedCollection og TCollectionItem kunne lige det jeg skulle bruge.

/HK



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31962
Nyheder : 719565
Indlæg : 6408173
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste