Author Topic: Подкажите, где ошибка в коде при вводе текста(вместо ноля вводится точка)  (Read 2298 times)

0 Members and 1 Guest are viewing this topic.

ksa-nsk

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
затык на вводе ноля и точки

надо ввести в поля информацию, она в переменной
Code: (clickermann) [Select]
$slovo   = "привет 0123456789к.,;"
но при вводе получается
привет .123456789к.;
т.е. вместо ноля точка, уже извращался по всякому, на сейчас такой код:

ввожу через процедуру
Code: (clickermann) [Select]
InputString($slovo)
сама процедура
Code: (clickermann) [Select]
// процедура ввода данных
SUB(InputString, $str)
   
   print("вводимая строка: ", $str)
   
   FOR($a, $a < STRLEN($str))
      $l = STRCUT($str, $a+1, 1)
      print("ТекСимвол: ", $l)
     
      SWITCH($l)
      CASE("а")
         KEYPRESS(#F)
      CASE("б")
         KEYPRESS(188)  //
      CASE("в")
         KEYPRESS(#D)
      CASE("г")
         KEYPRESS(#U)
      CASE("д")
         KEYPRESS(#L)
      CASE("е")
         KEYPRESS(#T)
      CASE("ё")
         KEYPRESS(192) //
      CASE("ж")
         KEYPRESS(186) //
      CASE("з")
         KEYPRESS(#P)
      CASE("и")
         KEYPRESS(#B)
      CASE("й")
         KEYPRESS(#Q)
      CASE("к")
         KEYPRESS(#R)
      CASE("л")
         KEYPRESS(#K)
      CASE("м")
         KEYPRESS(#V)
      CASE("н")
         KEYPRESS(#Y)
      CASE("о")
         KEYPRESS(#J)
      CASE("п")
         KEYPRESS(#G)
      CASE("р")
         KEYPRESS(#H)
      CASE("с")
         KEYPRESS(#C)
      CASE("т")
         KEYPRESS(#N)
      CASE("у")
         KEYPRESS(#E)
      CASE("ф")
         KEYPRESS(#A)
      CASE("х")
         KEYPRESS(219) //
      CASE("ц")
         KEYPRESS(#W)
      CASE("ч")
         KEYPRESS(#X)
      CASE("ш")
         KEYPRESS(#I)
      CASE("щ")
         KEYPRESS(#O)
      CASE("ъ")
         KEYPRESS(221)  //
      CASE("ь")
         KEYPRESS(#M)
      CASE("ы")
         KEYPRESS(#S)
      CASE("э")
         KEYPRESS(222)  //
      CASE("ю")
         KEYPRESS(190)  //
      CASE("я")
         KEYPRESS(#Z)
         
      CASE(";")
         keyDown(16)
         keyDown(161)
         keyDown(52)
         waitms(104)
         keyUp(161)
         keyUp(52)
         keyUp(16)
      CASE(",")
         keyDown(16)
         keyDown(161)
         waitms(104)
         keyUp(161)
         keyUp(16)
      CASE(".")
         KEYPRESS(191)
      CASE(" ")
         KEYPRESS(#SPACE)
         
      CASE(0)
         KEYPRESS(96)
      CASE(1)
         KEYPRESS(97)
      CASE("2")
         KEYPRESS(98)
      CASE("3")
         KEYPRESS(99)
      CASE("4")
         KEYPRESS(100)
      CASE("5")
         KEYPRESS(101)
      CASE("6")
         KEYPRESS(102)
      CASE("7")
         KEYPRESS(103)
      CASE("8")
         KEYPRESS(104)
      CASE("9")
         KEYPRESS(105)         
      DEFAULT
         print("ошибка")
      END_SWITCH
   END_CYC
   
END_SUB

//=============================================

« Last Edit: October 28, 2014, 08:59:17 PM by Oraven »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Почему это нельзя вставлять через буфер?
Code: (clickermann) [Select]
TOCLIP("привет 0123456789к.,;")
WAITMS (50)

KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)

HALT

Именно из за такой "капризности" KEYSTRING я и не люблю её использовать.
У меня вот что пишет
Code: [Select]
привет 0123456789к..4
Ума не приложу откуда там может взяться точка  :o
« Last Edit: October 28, 2014, 09:10:16 PM by Oraven »

ksa-nsk

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
спасибо, ещё не все команды в голове осели,
но в моём варианте, хоть и дубовом, всё же где глюк? Или это на моём компе так? Если ещё у кого-то, то может это надо автору сообщить?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Потестил твой пример, да действительно свитч с секцией 0 срабатывает на точку и 0 тоже самое с точкой.  :-\

ksa-nsk

  • Освоившийся
  • **
  • Posts: 55
    • View Profile
в общем, проблему решил, на всякий случай...
Поскольку мне нужен ввод текста с точкой, запятой и т.п., я сделал костыль:
перед свичем поставил
$str = STRREPLACE ($str, ".", "~"),
а в свиче уже case("~")  //".")   типа точка

тупо конечно, но для моего интерпретатора хватило.