Link to home
Start Free TrialLog in
Avatar of Jaymol
Jaymol

asked on

Passing TStrings without creating them.

Hi.

This is, I know, a silly question, but I'm sure I've seen it done.

If you have this procedure, (the procedure itself is irrelevant to this question).....

  procedure DoStuff(sValues: TStrings);

.....rather than create a TString and add the lines so that you can send it to the procedure, I'm sure that I've seen something - not this - but like this....

  DoStuff(['value1', 'value2', 'value3']);

(I know that that's a set, but it's something similar to that.)

Does anyone know what I mean?

John.
Avatar of Slavak
Slavak

sounds strange, are u sure that parameter of TStrings type?
Avatar of Jaymol

ASKER

Yes.
Avatar of kretzschmar
use this declaration

procedure DoStuff(strings : array of String);

then you can use

DoStuff(['value1', 'value2', 'value3']);

for iterating use

for i := low(strings) to high(strings) do ...

meikl ;-)
Avatar of Jaymol

ASKER

Thanks, but that's not what I want.  I could do that no problem but I want to know how to pass a TString in that manner.

John.
Don't think it possible :)
Avatar of Jaymol

ASKER

Sorry to disagree, but myself and a colleague are sure we've seen this.

John.
so, I will like to see it too
Was it perhaps an overloaded function?

procedure DoThings(value: TStrings);overload;
procedure DoThings(value: array of strings);overload;

DoThings(value: array of strings);
var
  iList: TStrings;
begin
//
end;
reddarin
no, you may misseen this,
or you see a method for adding in an already created Tstring-Object
Avatar of Jaymol

ASKER

No.  I've seen what I've asked how to do - honestly!

John.
ASKER CERTIFIED SOLUTION
Avatar of kretzschmar
kretzschmar
Flag of Germany image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
good point,  reddarin ;-)
Avatar of Jaymol

ASKER

meikl : nice.
kretzschmar,
I'm curious or maybe simple ninded but how do you release the TStringlist in the

                    Function GetStringList(Strings : array of string) : TStringList;
                     var i : Integer;
                     begin
                      Result := TstringList.Create;
                      for i := low(strings) to high(strings) do
                        Result.add(strings[i]);
                     end;
?
                     
martin_g,

i didn't free it, because it is used later,
therefore i have added this sentence

>keep in mind you must free the stringlist after

meikl ;-)
I guess I just need an example.  What I was thinking, probably in error : )  is that a stringlist created within a function had to be freed within that function.  
To free the function result  stringlist, would you do something like the following:

Procedure DoSomething;
var
myStringlist:TStringlist;

begin
MyStringList:=GetStringList(MyStrings);
>>MyStringList.Free;
end;

Does MyStringlist.Free free the GetStringList Tstringlist result?
>Does MyStringlist.Free free the GetStringList Tstringlist result?
yes
Avatar of Jaymol

ASKER

Thanks guys.