AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Code-Stil Frage

Ein Thema von Tommy1988 · begonnen am 10. Jul 2007 · letzter Beitrag vom 10. Jul 2007
Antwort Antwort
Seite 2 von 2     12   
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#11

Re: Code-Stil Frage

  Alt 10. Jul 2007, 16:23
Welche der beiden Varianten ist eigentlich performanter?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Code-Stil Frage

  Alt 10. Jul 2007, 17:38
Zitat von Tommy1988:
Hallo, ich habe diesen Code hier:
Delphi-Quellcode:
dif := 'BlaBla';
.
.
.
Label1.Caption := Format('Text BlaBla %s',[dif]);
Jetzt stelle ich mir die Frage, ob der folgende Code "gerechter" ist:

Delphi-Quellcode:
dif := 'BlaBla';
.
.
.
Label1.Caption := 'Text BlaBla '+dif;
für mich stellt sich die Frage da an einer anderen Stelle denn so finde ich es unkonsequent. Entweder beide Strings auslagern in eine Variable oder keinen.
Delphi-Quellcode:
dif := 'BlaBla';
full := 'Text BlaBla %s';
[...]
Label1.Caption := Format(full,[dif]);
Delphi-Quellcode:
dif := 'BlaBla';
full := 'Text BlaBla ';
[...]
Label1.Caption := full+dif;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#13

Re: Code-Stil Frage

  Alt 10. Jul 2007, 18:29
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:
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']));
Dh. wir geben den Parameterindex in der Formatierung mit an. Einfach mal ausprobieren, denn die Parameterindizierung ist wenig bekannt.

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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Code-Stil Frage

  Alt 10. Jul 2007, 18:32
Zitat von negaH:
Einzigst Fließkomma wird nicht unterstützt und das ist enorm schade würde doch die vielen FormatFloat(), FloatToStr() usw. auch noch ersetzt.
Was meinst Du jetzt damit? ShowMessage(Format('%.2f',[3.1415927]));
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#15

Re: Code-Stil Frage

  Alt 10. Jul 2007, 18:33
Ähm, das geht ? ab welcher Delphi Version ?

Gruß hagen
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.482 Beiträge
 
Delphi 10.1 Berlin Professional
 
#16

Re: Code-Stil Frage

  Alt 10. Jul 2007, 18:35
Zitat von negaH:
ab welcher Delphi Version ?
Delphi 3. Aber vielleicht war das schon in Delphi 1 möglich (kann ich jetzt nicht mehr nachvollziehen)
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#17

Re: Code-Stil Frage

  Alt 10. Jul 2007, 18:39
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz