![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как поделить строку
san6 © (2006-02-06 12:00:00)Че т у меня ничего не получается, надо исходную строку поделить на две, т. е. имеется например строка 'фывап@sdfg'. Из нее нужно получить две 'фывап' и 'sdfg'.
У меня пока неработающий вариант
procedure divstring(allstr, leftstr, rightstr: string; idstr: char );
var
i: integer;
begin
i:=1;
while (i < Length(allstr)) do
begin
if (allstr[i] <> idstr) then
leftstr[i]:= allstr[i]
else
begin
i:= i + 1;
while (i < Length(allstr)) do
rightstr[i]:=allstr[i];
end;
i:=i+1;
end;
end;
idstr идентификатор по которому строка разделяется.
Заранее спасибо за ответ.
ViktorZ (2006-02-06 20:54:00) [1]а в Делфях нет такой аналога Split как в VB?
san6 (2006-02-06 12:51:00) [2]Урра, получилось. Через copy, pos
san6 (2006-02-06 12:20:00) [3]Спасибо, сейчас попробую.
umbra (2006-02-06 12:19:00) [4]
procedure divstring(allstr : sring; var leftres, rightres: string;idstr: char );
var
i: integer;
begin
i := LastDelimiter(idstr, allstr);
if i = 0 then exit;
Dec(i);
leftres := LeftStr(allstr, i);
i := Length(allstr) - i - 1;
rigtres := RightStr(allstr, i);
end;
erika (2006-02-06 12:09:00) [5]используй функции pos и copy
если у тебя в качестве разделителя всегда используется @, то можешь на прямую использовать pos('@',строка), если же символ разделения возможно будет встречаться и другой, осуществи функцию присваивания разделительного символа:
x:='@'; // Вместо @ может быть любой символ тебя интерисующий
if pos(x, строка)<> 0 then begin
st1 := copy(строка,0,pos(x, строка)-1);
st2 := copy(строка,pos(x, строка)-1,length(строка));
end;
Sergey13 (2006-02-06 12:03:00) [6]Pos и Copy