It depends on the size of your loop.  If you are going to be appeding a
great number of strings, then I would suggest a string buffer approach -
where each iteration of the loop writes one string into the string buffer,
while an int variable is incremented with the length of the string.  Then
create a string with the length of the int.  In another loop, take the
strings from the buffer and write to the allocated string.

I have done tests with loops in sizes ranging from 10, 100, 1000, through to
1mil.  The time savings for the 1mil loop is several oders of magnitude.  I
won't bother for anything less than 100.

Dennis.

----- Original Message -----
From: Neven MacEwan
To: Multiple recipients of list delphi
Sent: Friday, November 01, 2002 12:27 AM
Subject: [DUG]: Friday Challange


Hi all,

Further to my enpty string question, I'm writing a lot of
functions that return a set of strings joined by a separator
ie 'col1, col2,...' or 'col1 = 'a' and colb = 'b'' (as you may guess
these are all parts of SQL Statements)

given a function 'Itemcount' that returns the number of items
and item(i) that returns the item string, and function sep what is the
best form of such a function

to seed the duscussion I'll give you one of my variants

function statement: string;
var
  I: integer;
begin
  Result := '';
  for I := 0 to pred(ItemCount) do
    if I = 0 then Result := Item(I)
    else Result := format('%s%s%s',[Result,Sep,Item(I)])
end;

Variants and explainations pls

Neven
---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED] 
with body of "unsubscribe delphi"
Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/

Reply via email to