Код: Выделить всё
function strtok(var s:string;delims:string):string;
{Функция разбивает строку s на слова, разделенные символами-разделителями,
указанными в строке delims. Функция возвращает первое найденное слово, при
этом из строки s удаляется начальная часть до следующего слова}
var res:string; state:byte; i:integer;
begin
state:=1;
res:='';
if s='' then
begin
result:='';
exit;
end;
while pos(s[state],delims)<>0 do
begin
inc(state);
if state>length(s) then
begin
s:='';
result:='';
exit;
end;
end;
while pos(s[state],delims)=0 do
begin
res:=res+s[state];
inc(state);
if state>length(s) then
begin
s:='';
result:=res;
exit;
end;
end;
while pos(s[state],delims)<>0 do
begin
inc(state);
if state>length(s) then
begin
s:='';
result:=res;
exit;
end;
end;
delete(s,1,state-1);
result:=res;
end;
s:=' 123 a,aa !!! bbb !';
delims:=' ,!';
strtok(s,delims); //возвращает '123', s='a,aa !!! bbb !'
strtok(s,delims); //возвращает 'a', s='aa !!! bbb !'
strtok(s,delims); //возвращает 'aa', s='bbb !'
strtok(s,delims); //возвращает 'bbb', s=''
strtok(s,delims); //возвращает '', s=''
В языке С есть одноименная функция в strings.h