Следующая статья: Управление завершением работы Windows.
Решение 1
function NextToken(P: PChar; Divider: PChar): PChar; const next: PChar=nil ; begin if P=nil then P:=next; if P<>nil then begin next:=StrPos(P, Divider); if next<>nil then begin next^:=#0; next:=@next[StrLen(Divider)]; end; end; NextToken:=P; end;
Решение 2
function StrTok(Phrase: PChar; Delimeter: PChar): PChar; const tokenPtr: PChar=nil; workPtr: PChar=nil; var delimPtr: PChar; begin if (Phrase<>nil) then workPtr:=Phrase else workPtr:=tokenPtr; if workPtr=nil then begin Result:=nil; Exit; end; delimPtr:=StrPos(workPtr, Delimeter); if (delimPtr<>nil) then begin delimPtr^:=Chr(0); tokenPtr:=delimPtr+1 end else tokenPtr:=nil; Result:=workPtr; end;