Einzelnen Beitrag anzeigen

CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#1

Optimierung Typkonvertierung von in place Konstanten

  Alt 15. Mär 2012, 14:00
Delphi-Version: XE
An einigen Codestellen habe ich noch keine Unicode-Unterstützung und daher entsprechende Warnungen. Bei der Umstellung auf Delphi XE stellt sich mir nun folgende Situation und Frage:

Ich habe diverse Aufrufe von Format('Hallo %s', [s]), bei denen ich ein AnsiString als Rückgabewert brauche. Also binde ich die Unit AnsiStrings ein.

Die "sichere" Variante, nun die richtige Version von Format aufzurufen wäre, 'Hallo %s' als Konstante vom Typ AnsiString zu definieren und zu verwenden.

Was passiert nun, wenn ich Format(AnsiString('Hallo %s'), [s]) verwende? Klar, dadruch wird die gewünschte Version von Format aufgerufen, nur: wird bereits beim Kompilieren hier eine AnsiString-Konstante verwendet, oder übersetzt der Compiler eine WideString-Version, die er zur Laufzeit in den AnsiString castet?

Da ich in der gerade in Arbeit befindlichen Unit etliche Hundert solcher Stellen habe, und diese - in Maßen - zeitkritisch ist, wäre diese Information hilfreich um festzulegen, ob sich der Mehraufwand, explizit Konstanten zu definieren, lohnt.
  Mit Zitat antworten Zitat