Dennis Therein lies the challange, to come up with an efficient 'Join' procedure that require no preknowlege of iteration count or item length
would the format be sominthing like TJoinItemFunction = function(Index: integer): string; TJoinOption = (joRemoveBlanks, joUnique, joCaseSensitive); TJoinOptions = set of TJoinOption; function Join(GetItem: TJoinItemFunction ; count: integer; const Sep: string, Options TJoinOptions): string; N ----- Original Message ----- From: "Dennis Chuah" <[EMAIL PROTECTED]> To: "Multiple recipients of list delphi" <[EMAIL PROTECTED]> Sent: Friday, November 01, 2002 9:36 AM Subject: Re: [DUG]: Friday Challange > > 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/ > --------------------------------------------------------------------------- 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/