Главная страница
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.058 c
2-1157091092
yel
2006-09-01 10:11
2006.09.17
Передать массив в подпрограмму


2-1156712447
иван8511
2006-08-28 01:00
2006.09.17
Печать без прокрутки страницы


2-1156596138
ZipFolder
2006-08-26 16:42
2006.09.17
Прочитать из "массива" в "массив"


15-1156771702
Черный Маг
2006-08-28 17:28
2006.09.17
Высший курс черной магии.


2-1156757046
Rubey
2006-08-28 13:24
2006.09.17
Форма с заставкой