Показать сообщение отдельно
  #3  
Старый 08.06.2017, 17:06
kenshi245 kenshi245 вне форума
Прохожий
 
Регистрация: 08.06.2017
Сообщения: 16
Версия Delphi: Delphi
Репутация: -625
По умолчанию

Цитата:
Сообщение от Alegun
Можно вытащить и без регулярок
Код:
var
 x,y,z: array[0..2] of integer;
 s: string = 'User.MoveTo(54754,35674,-1217); User.MoveTo(9764,1258,573); User.MoveTo(9836,52964,1649);';

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
 rs: string;
begin
 s:= StringReplace(s,');',',',[rfReplaceAll]);
 rs:= '';
 for i := 1 to Length(s) do
  if s[i] in ['0'..'9','-',','] then rs:= rs + s[i];

 for i := 0 to 2 do
  begin
   x[i]:= StrToInt(Copy(rs,1, Pos(',',rs)-1));
   Delete(rs,1,Pos(',',rs));
   y[i]:= StrToInt(Copy(rs,1, Pos(',',rs)-1));
   Delete(rs,1,Pos(',',rs));
   z[i]:= StrToInt(Copy(rs,1, Pos(',',rs)-1));
   Delete(rs,1,Pos(',',rs));
  end;
end;

Есть одна проблемка, если будет строка 'User.MoveTo(54754,35674,-1217); User.TROLOLOLO(9764,1258,573); User.MoveTo(9836,52964,1649);';
То он не должен записывать второе значение, так как там нет User.MoveTo, а ваш скрипт это делает)
Ответить с цитированием