Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > TStringList и string


Автор: Mr.Floppy 24.7.2006, 02:34
Есть строка (string) примерно следующего содержания: 'Строка 1'+#13#10+'Строка 2'+#13#10+'Строка 3'...
Каким образом эту строку лучше перегнать в TStringList?
Если ли какая-нибудь функция, реализующая это, или надо городить с циклами, Pos'ами и т.п.?
Add(string) добавляет одной строкой, а мне надо обращаться к ним, как к массиву. 

Автор: Bose 24.7.2006, 02:56
У TstringList есть свойство, что-то типа Delimiter которое отвечает за то,  какой символ используется в качестве разделителя. 

Можно сделать так: 
Заменить в строке все #13#10 на какой-нибудь малоиспользуемый текст(можно вообще выбрать "непечатный" символ типа chr(1)).
Сделать этот симол разделителем в TstringList.Delimiter:=chr(1)
А дальше сделать так: TstringList.DelimitedText:=строка с заменёнными символами.

к сожалению точных названий ф-ций сейчас не вспомню. Но когда-то я вполне успешно использовал подобный подход. 

Автор: Mr.Floppy 24.7.2006, 03:58
Спасибо, работает 

Автор: bazzzman 24.7.2006, 07:28
Не понимаю, чем не нравится свойство CommaText?

Код

procedure TForm1.Button1Click(Sender: TObject);
var s: String; sl: TStringList;
begin
s := '1'#13#10 + '2'#13#10;

sl := TStringList.Create;
sl.CommaText := s;

ShowMessage(IntToStr(sl.Count));

sl.Free;
end;


Отлично работает + легче чем с Delimiter.  

Автор: Romikgy 24.7.2006, 11:02
Цитата(bazzzman @  24.7.2006,  06:28 Найти цитируемый пост)
sl.CommaText := s;

можно проще 
Код

sl.Text := s;
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)