2016-01-11 12 views
5

In C# è possibile utilizzare stringhe letterali multilinea per avere una stringa che si estende su un'interruzione di riga fisica nel codice sorgente ad es.Come eseguire una stringa a riga multipla in 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>"; 

ma come fare questo in Delphi senza usare la concatenazione di stringhe, non tanto per le prestazioni, ma per guardare visivamente bello come in C#, invece di

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

risposta

14

Come fare questo in Delphi senza usare la concatenazione di stringhe?

Non è possibile. Non c'è supporto per i letterali multi linea. La concatenazione è l'unica opzione.

Tuttavia, il codice Delphi esegue la concatenazione in fase di esecuzione. È molto meglio farlo al momento della compilazione. Così, invece di:

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

scrittura

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

Grazie, apprezzo risposta ... ma questo è triste notizia triste –

+0

Come è triste? 'Risultato: = 'foo' + 'bar';' sarà fatto in fase di compilazione, quindi risulterà in un'unica costante, ''foobar''. Ho codificato stringhe molto lunghe e costanti in questo modo, e non prendono alcun runtime. Sono solo lì, compilati come testo statico. Il tuo modo, 'Risultato: = 'pippo'; Risultato: = Risultato + 'bar'; 'è lento, perché concatena in fase di esecuzione. –

+1

@RudyVelthuis Max è triste perché non vuole concatenarsi. Vorrebbe usare un letterale multilinea. –

Problemi correlati