Author Topic: как отличить текст от числа?  (Read 2000 times)

0 Members and 1 Guest are viewing this topic.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
как отличить текст от числа?
« on: January 10, 2015, 04:14:43 PM »
день добрый!


задача такова, я пишу в консоль команду, после чего даблкликам и контрал ц капирую нужный мне ответ (число) в буфер. но, иногда в эти 50мс между вводам команды и даблкликам в консоли вылазит сообшение, например чата, и копируется уже не число, а текст. вобщем мне надо распознать, текст это или число, повторять ввод команды или продолжать дальше.

Code: (clickermann) [Select]
      KEYPRESS(#F12) //вызов консоли
      wait(2)
      DBLCLICK(623,832)//даблклик в месте ввода
      waitms(50)
      TOCLIP ("command") //суну команду через буфер
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#V)
      WAITMS (50)
      KEYUP (#V)
      KEYUP (#CTRL)
      waitms(100)
      KEYPRESS(#enter) //ентер
      waitms(50)//и маленькая задержка чтоб ответ вылез,вот тут какраз в этот момент может вылезти текст
      DBLCLICK(1284,800)//даблклик по ответу
      waitms(50)
      KEYDOWN (#CTRL)//ну а дальше неважно
      WAITMS (50)
      KEYDOWN (#C)
      WAITMS (50)
      KEYUP (#C)
      KEYUP (#CTRL)
      WAITMS (50)
      KEYPRESS(#F8)



подскажите если есть какие идеи.
« Last Edit: January 10, 2015, 04:28:31 PM by dramster »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: как отличить текст от числа?
« Reply #1 on: January 10, 2015, 04:39:19 PM »
пол дня ламал голову, а когда обратился к вам, сам решил проблему  :-\

Code: (clickermann) [Select]
$text="g"
$num=2

$text=$text-$text
$num= $num-$num

IF($text= 0)
   print( "переменная text это число")
else
   print( "переменная text это текст")
END_IF

IF($num = 0)
   print( "переменная num это число")
else
   print( "переменная num это текст")
END_IF

halt



но всеже этот способ не идеален. при проверке выяснилось, что если текст содержит ")" то "ошибка интерпритации" . скорее всего не только скобка будет давать такой результат :( . но уже чтото.

возможно у когото еще есть идеи?
« Last Edit: January 10, 2015, 05:06:07 PM by dramster »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: как отличить текст от числа?
« Reply #2 on: January 10, 2015, 08:40:11 PM »
так как никто ничего путного не предложил, я остановился на своем варианте ($num-$num=0, если $num это число). но, как я уже сказал выше, если в функции сравнивать строковую переменную в которой есть символ"(", то ошибка. я перебрал все знаки и символы которые нашел у себя на клаве и понял, что ошибку выдают толька 2 символа " ) ( ", скобки. и причем знак "=" почемуто равен 0, тоесть текст в котором есть знак "=".

Code: (clickermann) [Select]
$t="g=text"

IF($t = 0)
  print($t," = 0") //выдает "g=text = 0"
END_IF

print($t)
halt

в остальных случаях все работает отлично.
в этоге мне всегото нужно отфильтравать 3 символа ")(="

Code: (clickermann) [Select]
$t="g=text"
$t=strfilter($t, "()=", 0)
$t=$t-$t

IF($t= 0)   
   print( "переменная t это число")   
else   
   print( "переменная t это текст")
END_IF

halt
« Last Edit: January 10, 2015, 08:43:04 PM by dramster »