/ 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
TStringlist som resultat af funktion
Fra : Mads M.


Dato : 06-01-02 18:06

Hej NG

Jeg kunne godt tænke mig at lave en funktion som returnerer en
Stringlist, men det driller lidt. F.eks. deklarationen:

Function test(Invar : String): TStringlist

Skal man create' Result variablen eller hur?

/Mads N

 
 
Thomas Rose (06-01-2002)
Kommentar
Fra : Thomas Rose


Dato : 06-01-02 18:41

Hej Mads,

"Mads M." <waup@punkass.com> wrote in message
news:okvg3u80jhmqmifuubrqjhpi929c6v6khc@4ax.com...
> Hej NG
>
> Jeg kunne godt tænke mig at lave en funktion som returnerer en
> Stringlist, men det driller lidt. F.eks. deklarationen:
>
> Function test(Invar : String): TStringlist
>
> Skal man create' Result variablen eller hur?

Ja, du bliver nødt til at kreere TStringList'en, f.eks.:

Result := TStringList.Create;

eller

test := TStringList.Create;

Personligt foretrækker jeg den første måde, da det gør koden lettere at
læse.

Cheers,
Thomas




PL (06-01-2002)
Kommentar
Fra : PL


Dato : 06-01-02 22:04

Hej Mads

Mit forslag er:

procedure TesterMads;
var L:TStringlist;
Function test(Invar : String): TStringlist;
begin
Result:=bla.bla // som er de forskellige værdier i TStringlisten
end;
begin
L:=TStringlist.Create;
L.AddStrings(test('en stringværdi'));
// anden programafvikling
L.Free;
end;

Ovenstående burde virke uden problemer

Mvh
PL



Lars Bargmann (07-01-2002)
Kommentar
Fra : Lars Bargmann


Dato : 07-01-02 08:04

Jeg bryder mig i det hele taget ikke om idéen at lade et object kreere et
andet sted end der hvor det bruges.
Jeg mener helt klart at man (for overskuelighedens skyld) bør kreere sin
StringList hvor den bruges og derefter nedlægge den igen samme sted.
Dette kan nemt gøres ved blot at overføre den som en parameter...

Procedure Test(StrList : TStringList);
Begin
if not assigned(StrList) then exit;
StrList.Add('Test');
End;

Det behøver ikke engang være en var-parameter, eftersom man i virkeligheden
kun overfører en pointer til listen, men det ville dog øge læseligheden af
koden hvis der blev benyttet en var-parameter. Fordelen i IKKE at bruge en
var-parameter er så at man burde (har ikke lige testet det lige nu) kunne
overføre eksempelvis en Listbox's Items-property (denne er erklæret som en
TStrings, og ikke en TStringList) og en var-parameter skal jo være af
nøjagtig samme type før det går godt...

Ovenstående er jo mindst lige så saimpelt at bruge som en funktion der
returnerer en StringList.

.....
MyStrings := TStringList.Create;
Test(MyStrings);
//Gør noget med MyStrings
MyStrings.Free;
.....

Håber ikke dette var alt for kludret at forstå... ???

Barf...
- Hardware: The part you kick.




"Mads M." <waup@punkass.com> wrote in message
news:okvg3u80jhmqmifuubrqjhpi929c6v6khc@4ax.com...
> Hej NG
>
> Jeg kunne godt tænke mig at lave en funktion som returnerer en
> Stringlist, men det driller lidt. F.eks. deklarationen:
>
> Function test(Invar : String): TStringlist
>
> Skal man create' Result variablen eller hur?
>
> /Mads N



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste