2016-01-11 9 views
5

W języku C# można użyć łańcuchów literału wielowierszowego, aby mieć łańcuch, który obejmuje fizyczną przerwę linii w kodzie źródłowym, np.Jak zrobić wieloznaczny ciąg wierszy w Delphi/Pascal

var someHtml = @"<table width="100%" border="0" cellspacing="0" cellpadding="5" align="center" class="txsbody"> 
    <tbody> 
     <tr> 
      <td width="15%" class="ttxb">&nbsp;</td> 
      <td width="85%" class="ttxb"><b>COMPANY NAME</b></td> 
     </tr> 
    </tbody> 
</table>"; 

ale jak to zrobić w Delphi bez użycia konkatenacji ciągów, nie tyle pod kątem wydajności ale patrząc wizualnie tak ładne jak w C# zamiast

Result :  = '<table width="100%" border="0" cellspacing="0" cellpadding="5" align="center" class="txsbody">'; 
Result : Result + '<tbody>'; 

Odpowiedz

14

Jak to zrobić w Delphi bez użycia konkatenacji ciągów?

Nie możesz. Brak wsparcia dla literałów wieloliniowych. Konkatenacja jest jedyną opcją.

Jednak twój kod Delphi wykonuje konkatenację w czasie wykonywania. O wiele lepiej jest zrobić to podczas kompilacji. Więc zamiast:

Result := 'foo'; 
Result := Result + 'bar'; 

zapisu

Result := 'foo' + 
      'bar'; 
+1

Dzięki, doceniam to odpowiedź ... jednak to jest smutne smutne wieści –

+0

Jak to jest smutne? 'Wynik: = 'foo' + 'bar';' zostanie wykonane w czasie kompilacji, więc wyniknie jedna stała, '' foobar''. W ten sposób zakodowałem bardzo długie stałe ciągi i nie biorą one żadnego czasu pracy. Po prostu są tam, skompilowane jako tekst statyczny. Twoja droga, 'Wynik: = 'foo'; Wynik: = Wynik + "pasek"; 'jest powolny, ponieważ konkatenuje w czasie wykonywania .. –

+1

@RudyVelthuis Max jest smutny, ponieważ nie chce się łączyć. Chciałby użyć literału wieloliniowego. –

Powiązane problemy