2013-07-16 10 views
10

Ho una lista di stringhe memorizzate nella TStringList, voglio convertirlo in stringa separati da virgole e io uso il seguente codiceConversione TStringList di stringa con delimeter

channelList: TStringList; 
aCurrentChannel := Stringreplace(channelList.Text,Char(13)+Char(10),',',[rfReplaceAll]); 

ma l'ultimo carattere è venuta come, come 1,2, c'è comunque da evitare?

+6

TStringList ha una proprietà CommaText –

+0

Come ha scritto JamesB, esiste la proprietà 'CommaText', ma l'uso di' Trim() 'dovrebbe correggere la soluzione originale, ad es.' StringReplace (Trim (sl.Text), ...) ' – ain

+0

@JamesB, CommaText circonda gli elementi con "come QuoteChar, forse questo non è ciò che l'OP vuole – whosrdaddy

risposta

15

È necessario utilizzare la proprietà DelimitedText della classe TStringList. Dalla guida in linea

Use DelimitedText to get or set all the strings in the TStrings object in a single string, separated by the character specified by the Delimiter property.

13

utilizzare la proprietà DelimitedText:

channelList.Delimiter := ','; 
channelList.QuoteChar := ''; // or 
channelList.QuoteChar := #0; // for higher delphi versions 
aCurrentChannel := channelList.DelimitedText; 
+2

+1 per 'QuoteChar' –

+0

' channelList.QuoteChar: = ''; 'non funziona più,' channelList.QuoteChar: = # 0; '- funziona – Marusyk

+0

Sto usando XE7 e ho ricevuto un errore: E2010 Tipi incompatibili: "Char" e "string". Ma in Delphi 6 ho sempre usato 'QuoteChar: = '';' Dipende dall'unicode? – Marusyk

1

Mentre siete in elenchi di stringhe vi suggerisco di lanciare uno sguardo a http://wiki.delphi-jedi.org/wiki/JCL_Help:IJclStringList

// var channelList: iJclStringList; 
var s: string; 

s := JclStringList.Add(['aaa','bbb','ccc ']) 
     .Split('ddd: eee', ':', False).Trim.Join(','); 
Problemi correlati