Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизРазбитие строки. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c