...Format-Parameter mehrfach nutzen?

Autor: Thomas Mueller
Homepage: http://www.dummzeuch.de

Kategorie: Strings

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);'




 

printed from
www.swissdelphicenter.ch
developers knowledge base