2009-09-09 13 views

Répondre

11

en fonction de vos critères pour "mieux". Si tout ce que vous faites est de concaténer deux chaînes, j'irais avec l'opérateur +. C'est évident ce que vous essayez de faire et c'est facile à lire, et c'est un peu plus rapide car il n'a pas à utiliser de variantes. (Avez-vous regardé ce format-t en fait sous le capot? C'est un peu effrayant!)

L'avantage majeur de format est qu'il vous permet de faire une seule chaîne et de le stocker quelque part, comme dans un fichier texte ou un resourcestring et rassemblez d'autres paramètres ultérieurement. Cela le rend utile pour des tâches plus complexes. Mais si tout ce que vous avez à faire est de coller deux chaînes ensemble, c'est un peu trop IMO.

+6

Habituellement "meilleur" à la fin se résume à "Dois-je comprendre pourquoi j'ai écrit le code de cette façon dans 3 mois à partir de maintenant?". –

5

est ici une troisième option:

s:=Concat(V1,V2); 
+6

Identique à s: = V1 + V2; Concat est une fonction "magic" du compilateur qui est réduite pour appeler le même assistant interne que + . –

+2

Bien qu'il soit identique dans les coulisses, je trouve cela plus facile à lire dans le code que l'opérateur "+", en particulier avec des chaînes longues ou des concaténations multiples. Cela revient au point pratique de Mason sur ce qui est «meilleur». – Argalatyr

10

Le format fonctionne avec l'internationalisation, ce qui permet de localiser votre application. La concaténation ne fonctionne pas. Par conséquent, je privilégie le format pour tout affichage qui peut devoir être produit d'une manière dépendante de la culture.

Mise à jour: Le format de raison pour l'internationalisation est que toutes les langues n'expriment pas tout dans le même ordre. Un exemple artificiel serait:

resourcestring 
    sentence = ' is '; 

var 
    subject = 'Craig'; 
    adjective = 'helpful'; 
begin 
    WriteLn(subject + sentence + adjective + '!'); 

Cela fonctionne, et je peux personnaliser avec un resourcestring, mais en espagnol j'écrire, « ¡Qué es servicial Craig! » La resourcetring ne m'aide pas. Au lieu de cela, je devrais écrire:

resourcestring 
    sentence = '%S is %S!'; // ES: '¡Qué %1:S es %0:S!' 
+1

Vous pourriez vouloir expliquer cette déclaration, il n'est probablement pas évident pour beaucoup d'utilisateurs de Delphi pourquoi Format fonctionne avec i18n. –

+1

OK, comment ça? –

+0

Exactement ce que j'espérais :-) –

0

J'utilise:

s := v1 + ' ' + v2; 

Il est plus clair et plus facile à comprendre.

C'est la chose la plus importante.

Vous pouvez trouver une construction légèrement plus efficace, par ex. en utilisant TStringBuilder dans Delphi 2009. Si l'efficacité est de la plus haute importance, alors faites ce qui est nécessaire dans les deux ou trois lignes les plus critiques. Partout ailleurs, utilisez du code et des constructions claires et faciles à comprendre.

Questions connexes