Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как поделить строку


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо