Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.17;
Скачать: CL | DM;

Вниз

Разбитие строки.   Найти похожие ветки 

 
Alral ©   (2006-08-25 15:40) [0]

Вопрос:
У меня строка String. Для примера: 2; 25; 1; 9; 7; 212. Как ее разделить на отдельные строки (2 25 1 9 7 212 ...).


 
MBo ©   (2006-08-25 15:45) [1]

c помощью TStringList.DelimitedText


 
Palladin ©   (2006-08-25 15:47) [2]

http://delphimaster.net/view/2-1156145761/


 
default ©   (2006-08-25 17:02) [3]

function BreakLine(Str: String; BreakChar: Char): TStrings;
begin
 Result := TStringList.Create;
 Result.Text := StringReplace(Str, BreakChar, #13, [rfReplaceAll]);
end;

....
Memo1.Lines := BreakLine("1!;2!;3!;;2!",            ";");

можешь такое попробовать, проблем тех, что есть с [1] быть не должно


 
tButton ©   (2006-08-25 17:32) [4]

procedure parse(source, sep: string; list: tStringList);
var
 p: integer;
 s_b: string;
 l: integer;
begin
 if list = nil then list:=tStringList.Create;
 l:=length(sep);
 if length(source)<=l then exit;
 p:=pos(sep, source);
 while p>0 do begin
   s_b:=Copy(source, 1, p-1);
   delete(source, 1, p+l-1);
   list.Add(s_b);
   p:=pos(sep, source);
 end;
 list.Add(source)
end;


 
tButton ©   (2006-08-25 17:34) [5]

 if list = nil then list:=tStringList.Create;
после этой строки не помешает
list.Clear;


 
Virgo_Style ©   (2006-08-25 17:41) [6]

tButton ©   (25.08.06 17:34) [5]
imho красивее будет ...else list.Clear; %-)


 
tButton ©   (2006-08-25 18:05) [7]


> Virgo_Style ©   (25.08.06 17:41) [6]

резонно =)


 
default ©   (2006-08-25 18:11) [8]

tButton ©   (25.08.06 17:34) [5]
не мешало бы крайне непроизводительный delete убрать
с ним код превращается в убожество которое думаю будет ещё менее производительней, чем код из [3] который я привёл только ради показа идеи


 
tButton ©   (2006-08-25 18:23) [9]

только ради "не учить плохому"?
   source:=Copy(source, p+l, length(source));
ну только длину сорца нужно предварительно замерять.

а чем delete так плох?


 
default ©   (2006-08-25 18:42) [10]

tButton ©   (25.08.06 18:23) [9]
код Copy, Delete,... можно посмотреть в исходниках
как надо делать смотреть в  коде
"procedure TStrings.SetTextStr(const Value: string);"
если разделителей может быть много можно добавить Pos, но идеология останется парсинга останется та же


 
tButton ©   (2006-08-25 21:39) [11]

в принципе, на модификацию исходной строки можно вообще запоминать
(в конце концов известно где закончилась предыдущая)
я просто ставил целью максимальню наглядность.



Страницы: 1 вся ветка

Текущий архив: 2006.09.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.055 c
4-1147863368
roughneck
2006-05-17 14:56
2006.09.17
InsertMenu с картинкой


15-1155497541
VirEx
2006-08-13 23:32
2006.09.17
JDMClient


15-1156791269
Konstantin555
2006-08-28 22:54
2006.09.17
СПАСАЙТЕ!Комп не грузится,останавливается на"выборе"пользователя!


1-1154624425
ISK(CMEPTb)
2006-08-03 21:00
2006.09.17
Вставка объектов в текстовый редактор


15-1156777577
Kerk
2006-08-28 19:06
2006.09.17
Мир