![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Парсер строки [D6, XP]
novai © (2009-12-10 07:30:00)есть TStringList со строками типа:
установить 100 100
идти 10 10
задержать 20
повоторить
как правильно пропарсить строки, чтобы получить содержимое в 3х переменных?
например итог парсера первой строки:
var
cmd, param1, param2: strings;
...
парсим строку на выходе получаем:
cmd:= 'идти';
param1:='10';
param2:='10';
Kyn66 (2009-12-10 09:08:00) [41]Если количество столбцов всегда одинаково, то для этих целей есть у RX хорошая функция ExtractWord
function ExtractWord(N: Integer; const S: string; const WordDelims: TCharSet): string;
Example
S := 'Let him go';
S1 := ExtractWord(2, S, [' ']);
{ here S1 = 'him' }
MBo (2009-12-10 08:14:00) [42]проще всего TStringList.CommaText использовать
novai (2009-12-10 07:36:00) [43]стоит ли использовать pos итп? если да - почему?
novai (2009-12-10 07:35:00) [44]сделал пока так:
procedure TScriptedObj.ScriptStart;
const delimeter=' ';
var
all, cmd, param1, param2:string;
n,n2:integer;
begin
// парсер текущей строки скрипта
cmd:='';
param1:='';
param2:='';
n:=1;
all:= script.Strings[scriptpos];
for n2:=1 to length(all) do
begin
if all[n2] = delimeter
then inc(n)
else
case n of
1: cmd:=cmd+all[n2];
2: param1:=param1+all[n2];
3: param2:=param2+all[n2];
end;
end;