2009-09-09 16 views

Respuesta

11

depende de su criterio para la "mejor". Si todo lo que estás haciendo es concatenar dos cadenas, iría con el operador +. Es obvio lo que intentas hacer y es fácil de leer, y es un poco más rápido porque no tiene que usar variantes. (¿Usted ha visto lo que format hace realidad bajo el capó? Que es un poco de miedo!)

La principal ventaja de format es que le permite hacer una sola cadena y lo almacena en algún lugar, como por ejemplo en un archivo de texto o una la cadena de recursos, y reúne otros parámetros más adelante. Esto lo hace útil para tareas más complejas. Pero si todo lo que necesitas hacer es unir dos hilos, es un poco exagerado IMO.

+6

Por lo general, "mejor" al final se reduce a "¿Entiendo por qué escribí el código de esta manera 3 meses a partir de ahora?". –

5

Aquí hay una tercera opción:

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

Eso es idéntico a s: = V1 + V2; Concat es una función "mágica" del compilador que se contrae para llamar al mismo auxiliar interno como + . –

+2

Si bien es idéntico entre bastidores, me parece más fácil de leer en código que el operador "+", especialmente con cadenas largas o concatenaciones múltiples. Esto se remonta al punto práctico de Mason de lo que es "lo mejor". – Argalatyr

10

El formato funciona con la internacionalización, lo que permite localizar su aplicación. La concatenación no. Por lo tanto, prefiero el formato para cualquier pantalla que pueda tener que producirse de una manera dependiente de la cultura.

Actualización: El formato de razón funciona para la internacionalización es que no todos los idiomas expresan todo en el mismo orden. Un ejemplo sería artificial:

resourcestring 
    sentence = ' is '; 

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

Esto funciona, y puede personalizar con un resourcestring, pero en español me escribiría, "¡Qué Servicial es Craig!" La cadena de recursos no me ayuda. En su lugar debería escribir:

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

Es posible que desee explicar esa afirmación, probablemente no sea obvio para muchos usuarios de Delphi por qué el formato funciona con i18n. –

+1

OK, ¿cómo es esto? –

+0

Justo lo que esperaba :-) –

0

que utilizo:

s := v1 + ' ' + v2; 

Es más claro y más fácil de entender.

Eso es lo más importante.

Puede encontrar una construcción que sea marginalmente más eficiente, p. utilizando TStringBuilder en Delphi 2009. Si la eficiencia es de suma importancia, haga lo necesario en las dos o tres líneas más críticas. En cualquier otro lugar, use código y construcciones que sean claras y fáciles de entender.

Cuestiones relacionadas