I agree. I also find that adding spaces in the right place can help when scanning over code looking for problems.
Eg Result := format( '%s%s%s%s%s', [ Result, Sep, Quote, Item[I], Quote ] ) is easier to read than Result := format('%s%s%s%s%s',[Result,Sep,Quote,Item[I],Quote]) ----- Original Message ----- From: Neven MacEwan <[EMAIL PROTECTED]> To: Multiple recipients of list delphi <[EMAIL PROTECTED]> Sent: Friday, November 01, 2002 10:58 AM Subject: Re: [DUG]: Friday Challange > Tracey > > Stylistic really I also finding typing pred(Count) is less error > prone the - 1 sometimes gets lost > > N > > ----- Original Message ----- > From: "Tracey Maule" <[EMAIL PROTECTED]> > To: "Multiple recipients of list delphi" <[EMAIL PROTECTED]> > Sent: Friday, November 01, 2002 10:48 AM > Subject: Re: [DUG]: Friday Challange > > > Just as an aside, could u tell me why u are all using pred(itemcount) > instead of (itemcount - 1)???? > > > ----- Original Message ----- > From: Stephen Bertram > To: Multiple recipients of list delphi > Sent: Friday, November 01, 2002 9:38 AM > Subject: RE: [DUG]: Friday Challange > > > I've done this in 5 different ways. One of the more flexible is > > function statement(Sep, Quote: String): string; > var > I: integer; > begin > Result := Sep; > for I := 0 to pred(ItemCount) do > Result := format('%s%s%s%s%s',[Result,Sep,Quote,Item[I],Quote]) > Delete(Result, 1, Length(Sep); > end; > > The main advantage of this is speed where the list is large - the > conditional is removed from the iteration. > (Note that many variants of SQL limit the number of parameters in a list to > 255 and the length of the list to 2000 or 4000.) > > One of our standard method for comma separated lists is to use a stringlist > (not efficient but simple and avoids empty lists): > > function statement(FieldName, EmptyCondition: String; Quote: Boolean): > string; > var > i integer; > ResList : TStringList; > begin > ResList := TStringList.Create; > for I := 0 to pred(ItemCount) do > if Quote > ResList.Add(Format('''%s''',[Item[i]])) > else > ResList.Add(Item[i]); > if ResList.Count > 0 then > Result := Format('%s in (%s)',[FieldName, ResList.CommaText] > else > Result := EmptyCondition; > ResList.Free; > end; > > Result := $0.02; > > Stephen > > -----Original Message----- > From: Neven MacEwan [mailto:neven@;mwk.co.nz] > Sent: Friday, 1 November 2002 12:28 a.m. > To: Multiple recipients of list delphi > 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/