2009-09-09 13 views

Odpowiedz

11

zależy od kryteriów "najlepszy". Jeśli wszystko co robisz to łączenie dwóch ciągów, używałbym operatora +. To oczywiste, co próbujesz zrobić i łatwo odczytać, a to trochę szybciej, ponieważ nie musi korzystać z wariantów. (Czy spojrzał na co format faktycznie robi pod maską? To trochę przerażające!)

Główną zaletą format jest to, że pozwala tworzyć jeden ciąg i przechowywać go gdzieś, na przykład w postaci pliku tekstowego lub resourcestring, i zbieraj inne parametry później. Dzięki temu jest przydatny w bardziej złożonych zadaniach. Ale jeśli wszystko, co musisz zrobić, to przykleić dwa struny do siebie, to trochę przesadzone IMO.

+6

Zwykle "najlepsze" w końcu sprowadza się do "Czy rozumiem, dlaczego napisałem kod w ten sposób 3 miesiące od teraz?". –

5

Oto trzecia opcja:

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

To jest identyczne z s: = V1 + V2; Concat to funkcja "magiczna" kompilatora, która jest zwinięta, aby wywołać tego samego wewnętrznego pomocnika, co + . –

+2

Podczas gdy jest to identyczne za kulisami, uważam, że jest to łatwiejsze do odczytania w kodzie niż operator "+", szczególnie w przypadku długich ciągów lub wielokrotnych konkatenacji. Wraca to do praktycznego punktu, w którym Mason jest "najlepszy". – Argalatyr

10

Format działa z internacjonalizacją, umożliwiając lokalizację aplikacji. Konkatenacja nie. Dlatego preferuję format dowolnego wyświetlacza, który może być produkowany w sposób zależny od kultury.

Aktualizacja: format powód działa dla internacjonalizacji jest to, że nie wszystkie języki wyrażają wszystko w tej samej kolejności. Zmyślony Przykładem może być:

resourcestring 
    sentence = ' is '; 

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

To działa, i mogę dostosować się resourcestring, ale w języku hiszpańskim chciałbym napisać, "¡Qué Servicial es Craig!" Łańcuch zasobów mi nie pomaga. Zamiast powinienem napisać:

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

Możesz wyjaśnić to stwierdzenie, prawdopodobnie nie jest oczywiste dla wielu użytkowników Delphi, dlaczego Format działa z i18n. –

+1

OK, jak to jest? –

+0

Dobrze, na co liczyłem :-) –

0

używam:

s := v1 + ' ' + v2; 

To najczystszy i najprostszy do zrozumienia.

To jest najważniejsze.

Możesz znaleźć konstrukcję, która jest marginalnie bardziej wydajna, np. za pomocą TStringBuilder w Delphi 2009. Jeśli wydajność jest sprawą najwyższej wagi, należy zrobić to, co konieczne w dwóch lub trzech najbardziej krytycznych liniach. Wszędzie indziej użyj kodu i konstrukcji, które są jasne i łatwe do zrozumienia.