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

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

Парсер строки [D6, XP]


Страницы:   1 2 3

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;


Страницы:   1 2 3

Наверх

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