![]() |
Re: Code-Stil Frage
Welche der beiden Varianten ist eigentlich performanter?
|
Re: Code-Stil Frage
Zitat:
Delphi-Quellcode:
dif := 'BlaBla';
full := 'Text BlaBla %s'; [...] Label1.Caption := Format(full,[dif]);
Delphi-Quellcode:
dif := 'BlaBla';
full := 'Text BlaBla '; [...] Label1.Caption := full+dif; |
Re: Code-Stil Frage
Ich stimme Sidorion vollständig zu.
Bei größeren Projekten wird man nach und nach alle Format() String als Resourcen auslagern und kann dann mit den in Delphi integrierten Tools Resourcen DLLs erzeugen und hat so sehr schnell eine Mehrsprachenanwendung. Von der Performance her könnte Format() sogar schneller sein als das manuelle Zusammenbauen. Besonders wenn man viele verschiedene Parameter benutzt wird Format immer performanter. Es kann intern mit preallozierten Buffern arbeiten und so unnörige Aufrufe zum Speichermanager vermeiden, und gerade dieser steht in Zeiten Multithreaded Anwendungen unter enormen Performancedruck (Locking per RTLs ist das Stichwort). Zudem erlaubt es die Anwendung von Format() String bei der Translation in eine andere Sprache die Parameterreihenfolge ztu ändern. Man muß dazu konsequenter weise so vorgehen
Delphi-Quellcode:
Dh. wir geben den Parameterindex in der Formatierung mit an. Einfach mal ausprobieren, denn die Parameterindizierung ist wenig bekannt.
resourcestring
sTest1 = 'Das ist ein %1:0.2d %2:s mit mehreren Parametern als %2:%s'; sTest2 = 'Dieser %2:%s ist der %1:0.2d. Versuch eines %2:%s'; ShowMessage(Format(sTest1, [12, 'Test'])); ShowMessage(Format(sTest2, [12, 'Test'])); Ein weiters Kriterium ist die realtive Universalität von Format(), ich würde mir ein printf() wünschen, also noch viel merh Features in Format(). Format() ersetzt nicht nur die simple Stringkonkatenation sondern auch IntToStr() sogar mit Ausrichtung und Ausfüllen führender Nullen, es ersetzt IntToHEX(), es kann einen Pointer formatieren, einen PointerToStr() gibts dagegen garnicht. Einzigst Fließkomma wird nicht unterstützt und das ist enorm schade würde doch die vielen FormatFloat(), FloatToStr() usw. auch noch ersetzt. Somit kann man mit der Anwnedung von Format() den Bibliothekumfang und die Lesbarkeit und Wartbarkeit des Sources enorm verbessert werden. Statt eben 20 verschiende Funtkionen nur eine universelle Formatierung Funktion. Leider ist die C Fraktion mit ihren printf() da weiter. Gruß Hagen |
Re: Code-Stil Frage
Zitat:
Delphi-Quellcode:
ShowMessage(Format('%.2f',[3.1415927]));
|
Re: Code-Stil Frage
Ähm, das geht ? ab welcher Delphi Version ?
Gruß hagen |
Re: Code-Stil Frage
Zitat:
|
Re: Code-Stil Frage
ich schaue das aber nochmal in der Hilfe nach. wart....
Ok ab Delphi 3. Was Hänzchen in Delphi 1 nicht lernt lernt er ab Delphi 3 nimmer mehr ;) Man lernt nie aus, danke. Und noch par Gründe mehr , den Format() kann auch teilweise die Float Konvertierungen einsparen. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz