whats new ¦  programming tips ¦  indy articles ¦  intraweb articles ¦  informations ¦  links ¦  interviews
 misc ¦  tutorials ¦  Add&Win Game

Tips (1548)

Database (90)
Files (137)
Forms (107)
Graphic (116)
IDE (21)
Indy (5)
Internet / LAN (131)
IntraWeb (0)
Math (76)
Misc (127)
Multimedia (45)
ActiveX (51)

OpenTools API (3)
Printing (35)
Strings (83)
System (268)
VCL (243)


Tips sort by

Search Tip

Add new Tip

Add&Win Game


19 Visitors Online

...use a format parameter more than once?
Autor: Thomas Mueller
Homepage: http://www.dummzeuch.de
[ Print tip ]  

Tip Rating (3):  

Sometimes you probably have written something like this:

s := Format('Hello %s, your name is %s %s', [FirstName, FirstName, LastName]);

(an admittedly stupid example ;-) )

And if you do, you probably found it annoying that you need to specify the FirstName parameter
twice, in particular if there are lots of similar lines.

But this isn't necessary because you can specify the parameter position to use for the placeholder
in the format string like this:

s := Format('Hello %0:s, your name is %0:s %1:s', [FirstName, LastName]);

Just one more example from a code generator I am currently writing:

TableName := 'Customer';
s := Format(' f%0:sTableAuto := T%0:sTableAuto.Create(f%0:Table);', [TableName]);

which results in

s := ' fCustomerTableAuto := TCustomerTableAuto.Create(fCustmerTable);';


Manchmal schreibt man solche Dinge wie:

s := Format('Hallo %s, Dein Name ist %s %s', [Vorname, Vorname, Nachname]);

(Ok, doofes Beispiel. ;-) )

Und aergert sich dann, insbesondere, wenn man es sehr haeufig schreibt, dass man den Parameter
Vorname mehrfach angeben muss.

Das ist jedoch gar nicht notwendig, denn man kann im Format-String bei einem Platzhalter auch
angeben, welcher Parameter dort eingefuegt werden soll:

s := Format('Hallo %0:s, Dein Name ist %0:s %1:s', [Vorname, Nachname]);

Hier noch ein etwas sinnvolleres Beispiel aus einem Code-Generator, den ich gerade schreibe:

TableName := 'Kunden';
s := Format(' f%0:sTableAuto := T%0:sTableAuto.Create(f%0:Table);', [TableName]);

soll ergeben:

s := ' fKundenTableAuto := TKundenTableAuto.Create(fKundenTable);'


Rate this tip:

very good

Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners