Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Graubart

Pages: [1] 2 3
1
Учебные статьи / Re: Массивы
« on: December 01, 2019, 06:11:17 PM »
Что еще за 05? Число не может начинаться с нуля.
Вполне может. Допускается перед значимым числом ставить любое количество нулей. Кроме того, перед десятичной точкой можно нуль вообще не ставить. Вот простая прога, доказывающая это:
Code: (clickermann) [Select]
$value_1=5
 $value_2=05
 $value_3=0005
 $value_4=0.5
 $value_5=000.5
 $value_6=.5
 $mes=STRCONCAT($value_1,"=5",CHAR(13),$value_2,"=05",CHAR(13),$value_3,"=0005",CHAR(13),$value_4,"=0.5",CHAR(13),$value_5,"=0000.5",CHAR(13),$value_6,"=.5")
 $mr=DIALOGBOX($mes,0)
   HALT
Ошибка скорее всего кроется в том, что неправильно указан путь к файлу 002.bmp.


2
Общие вопросы / Re: обработка дат
« on: November 02, 2019, 05:48:45 PM »

Когда-то в одном проекте я столкнулся с этой задачей. Но там речь шла о больших промежутках лет, до тысяч. Хотел сначала тоже через Unix-время решить, но там зашел в минуса и сложности. Сделал через подсчет количества лет с начала новой эры с учетом високосных дней. Точность 100%, но только по григорианскому календарю.
В КМ это будет выглядеть так:

Code: (clickermann) [Select]
// Массив к-ва дней на начало каждого месяца
 $num_days[1]=0
 $num_days[2]=31
 $num_days[3]=59
 $num_days[4]=90
 $num_days[5]=120
 $num_days[6]=151
 $num_days[7]=181
 $num_days[8]=212
 $num_days[9]=243
 $num_days[10]=273
 $num_days[11]=304
 $num_days[12]=334
// Начальная дата цифрами
 $day_0=15
 $month_0=8
 $year_0=2019
// Конечная дата, можно вставить любую
 $day_1=$_date_d
 $month_1=$_date_m
 $year_1=$_date_y
// К-во високосных дней
 $leap_year_0=(($year_0-4*INT($year_0/4)=0) AND ($year_0>0 OR INT($year_0/100)-4*INT(($year_0/100)/4)=0))
// К-во прошедших дней с начала новой эры
 $num_d_0=365*($year_0-1)+INT(($year_0-1)/4)+$num_days[$month_0]+$day_0+($month_0>2)*$leap_year_0
 $leap_year_1=(($year_1-4*INT($year_1/4)=0) AND ($year_1>0 OR INT($year_1/100)-4*INT(($year_1/100)/4)=0))
 $num_d_1=365*($year_1-1)+INT(($year_1-1)/4)+$num_days[$month_1]+$day_1+($month_1>2)*$leap_year_1
//Разница дней
 $dif_day=$num_d_1-$num_d_0
   HALT

3
Проблема действительно в этой вот одной единственной функции, которая к слову считается устаревшей после ввода серии tf...
Единственным плюсом функции STRWRITELN является наличие флага перезаписи. Стоит добавить такой флаг в функцию TFWRITE и всю серию STR… можно похерить. Хотя, серия STR… работает быстрее TF… на пару микросекунд  :)

4
Предложения / Re: English
« on: September 24, 2019, 04:29:20 PM »
... but the whole program is just messed up from my computer ...
This is all very simple! You need to switch to the English version. Click settings, open the middle tab, select «en». Alles wird gut!

5
Предложения / Re: English
« on: September 19, 2019, 01:52:32 AM »
If mister tatormator has already learned how to translate texts on google translate, what prevents him from page-by-page to translation of help for himself and writing it into text files? Agree, to decompile a CHM-file, to translate it, and then to compile it again, hardly anyone will do it for the sake of the one person.

6
А там ничего по дороге не потерялось?
А таки потерялось. STRWRITELN не работает. Другое не знаю. не пробовал.

7
Файл.wav должен обязательно находиться в той же папке, где и скрипт, можно в подпапке, например "sound\" или "data\sound\" или другой. Путь к файлу указывается относительный, абсолютный не работает. После начала проигрыша файла в коде нужно предусмотреть время звучания до конца, иначе звук будет обрезанным или следующий звуковой файл будет пропущен.
Напиши код, которым ты хочешь проиграть файл, подправим.

8
 Дискуссия явно зашла не в ту степь. Автор топика не смог внятно объяснить, что он хочет. А ведь рациональное зерно в его идее есть. Нужен аналог "Press any key". Я предлагаю Джонни в следующем релизе в функцию ISKEYDOWN внести маленькое изменение: ISKEYDOWN(0) возвращает 1 если в момент вызова функции зажата любая клавиша или кнопка мыши и 0 - если все отпущены.
 Конечно, "Press any key" легко осуществить через GETKEYSDOWN. Но скорость реагирования на порядок меньше. Массивы уступают по скорости прямым функциям. Пример:
Code: (clickermann) [Select]
  GETKEYSDOWN($presskey)
   WHILE($presskey=0)
  GETKEYSDOWN($presskey)
 ..... // исполняемый скрипт
  WAIT(.05)
   END_CYC

9
Ээээ.. Я тоже так до сих пор не понял где это можно применить, кроме программы-шутки.

Спасибо, Винт! Попробую оба способа.
А применить я хочу в скрипте, который кликает по быстро возникающим объектам. Скорость бешеная и если реальную мышь дёрнуть хоть немного, один объект останется не закликаным.

10
Кто знает, как можно программно отключить мышь при выполнении скрипта? А по завершении - снова включить? Может, у кого нибудь есть готовые плагины для колл?

11
Общие вопросы / Re: SENDMESSAGE
« on: June 21, 2019, 07:19:15 PM »
Вряд ли такие команды есть в WinAPI.

Первое - это стили окна, они задаются при создании. Часть стилей можно заменить и позже. Но мне кажется это не API, а через вызов библиотеки GUI

Второе это обработчик событий. Может и есть команды, но я не знаю.
По первому я так и подозревал, что таких команд нет. Перерыл весь мелко-мягкий сайт - и MSDN, и API, и UWP, нигде не нашел.
А по второму, думаю, есть. Вот, например маленькая прога - Power Menu для Win - https://power-menu.ru.uptodown.com/windows. Закрепляет окно, сворачивает в трей, регулирует прозрачность. Как-то она делает это.

12
Общие вопросы / Re: SENDMESSAGE
« on: June 21, 2019, 02:44:39 PM »
А кто знает, какие коды и параметры POSTMESSAGE для нижеперечисленных сообщений окну (если они вообще есть в винде)?

1. Убрать с заголовка окна иконку, все кнопки управления и меню по правой клавише.
2. Закрепить окно на своем месте поверх всех окон так, чтобы невозможно его было ни сдвинуть, ни переместить, ни перекрыть никаким способом.

13
Отлично. К тому же кейсы в свитче проверяются не все, в отличие от пирамиды ифов, а только до нахождения первого подходящего. Остальные инорятся. Поэтому пирамиду свитча надо строить с учетом этого. Вот два примера:

 Здесь, если $a=11 выполнится CASE(>9)
Code: (clickermann) [Select]
   SWITCH($a)
  CASE(>12)
 .....
  CASE(>9)
 .....
  CASE(>6)
 .....
  CASE(>3)
 .....
   END_SWITCH

 Здесь, если $a=11 выполнится CASE(>3)
Code: (clickermann) [Select]
   SWITCH($a)
  CASE(>3)
 .....
  CASE(>6)
 .....
  CASE(>9)
 .....
  CASE(>12)
 .....
   END_SWITCH

14
Баг c PRINTC. Сначала подумал, что это из за моей лапши, но как оказалось, это происходит со всеми строками, которые не умещаются в ширину лога
Еще заметил, что если текущий час меньше 10, то  время в логе отображается без 0 в разряде десятков. Вроде тоже фигня, но всё равно, как то неперфекционально :D

Есть такой баг. Обхожу его увеличением окна лога. А то, что  часы до 10 без нуля, действительно неудобно. Это не только в логе, но также и в текущей дате и времени. И часы, и минуты, и секунды. При выводе кривокосо получается. :)

15
Использование / Re: «Pearls before swine»
« on: December 22, 2018, 11:37:54 PM »
Эх, запарка была в конце года, но нашел сейчас время забежать на форум.

Сорри, но я в твоем коде не смог разобраться  :( . Уж очень много там прыжков на метки  :(.
Сам ненавижу эти ужимки и прыжки. Но когда делаешь новый проект, то без этого не обойтись. Потом всё редактируется... Вот теперь у меня ни одной метки нет.

Quote
Взял твой  подсчет шаров... и полностью переделал :D
Что-то я ничего нового не обнаружил, по мелочам больше  :D. А ты сам пробовал запустить свой код где-то после 30 левела?

Quote
Скрипт считает шары в неактивном окне и убирает лишние. Больше он ничего не делает, при старте шары должны быть на столе, и кнопку go жмем вручную.
Это у тебя типа полуавтомат? Опускается сам, а поднимается вручную. ;)

Quote
Из минусов, у меня картинка на игровом поле при привязке иногда искожается. Скорее всего это чето плееру не нравится.
А плеер тот что ты скачал или мой? Моему всё нравится.

Quote
Code: (clickermann) [Select]
IF($hwnd = 0)
  print("[b]окна нет[/b]")
  halt
END_IF
Если окна нет, надо не писать, а закрывать программу.

Quote
Code: (clickermann) [Select]
   FOR($kx=0,$kx<23)
Шаров в рядах бывает больше, чем 23, в двух последних максимум 29.

Quote
Code: (clickermann) [Select]
      LCLICK(451,678)  //клик в пустоту на всякий случай.
Этот клик - верный путь к сбою программы

Quote
По поводу ошибки POP(), Vint уже оветил. Но скорее всего ты параметр  $A_hwnd упустил.
Нет, там просто моя невнимательность и спешка  :-\

Pages: [1] 2 3