Автор Тема: [Alpha/Beta Testing] Тестируем сырые обновления (ссылки в первом посте)  (Прочитано 95134 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

dramster

  • Герой форума
  • *****
  • Сообщений: 956
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #585 : Март 25, 2019, 07:37:19 pm »
Я какбы тоже обдумывал смысл этого препроцессора все эти дни. Вроде вполне понял как это работает (по крайней мере я в это верю  ;D). И пришел к выводу, что вот это:
хоть сокрытия, хоть шифрования
Просто не работает, чтото не получилось, и Джонни исправит... надеемся.

Вот это
хоть доработки и введения собственных конструкций и инструкций.
Уже итак есть - CALL или CALLARR.

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



 А сейчас хотелось бы поговорить о пользовательских функциях, необязательно написанных на кликермане, можно написать в сторонних языках. И эта возможность у нес есть. Все упирается в типы данных.
 Кликерман имеет что - строки, числа, массивы. Впринципе этого вполне хватает 99% случаев. Передать в ДЛЛ мы можем числа и массивы, УРА, этого хватит на все 100% случаев. Передав массив, в длл мы его переделаем под то что нам требуется, и будем работать с теми типами которые нам нужны именно там.
Остается один ОГРОМНЫЙ недостаток. ДЛЛ возвращает лишь одно число в 4 байта  :( и всё...И хоть ты тресни.  >:(
Есть второй недостаток, это то, что CALL  это не функция.

Но ведь #preprocessor "filename" возвращает PWideChar, это куча информации (незнаю даже, есть ли в нем ограничение). Почему бы не сделать и в CALL/CALLARR возврат хотябы массива чисел, бОльшего то и не надо   :'( из этого массива в кликермане также можно сделать то что нужно.

Это было по [Alpha/Beta Testing]


Далее хотел по предложению в следующих версиях:

Мы имеем графический буфер, обрабатывается довольно быстро, но только теми процедурами, которые присутствуют в штатном функционале. Если нужно с графикой поиздеваться по своему, то выхода 2 - попиксельный анализ и обработка в буфере или попиксельно перекидывать буфер в массив и далее уже ковыряние и снова попиксельно сунем в буфер. И первое и второе занимает вечность.

Предложение

Добавить две функции:
. выгрузка графического буфера (области) в массив
. загрузка массива в графический буфер (область)

В массиве никаких координат, просто цвета.

Для чего? Имея CALLARR и выгрузку графического буфера в массив , мы уже сможем быстро обработать/анализировать  большие части графики как нам захочется. А когда CALL будет возвращать массив, то и загрузка массива в графический буфер в  тему.

 ::) Пока это все мои ХОТЕЛКИ. + все уже существующее в кликермане = цены ему не будет ;D




« Последнее редактирование: Март 25, 2019, 07:43:55 pm от dramster »

ya12

  • Освоившийся
  • **
  • Сообщений: 95
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #586 : Март 25, 2019, 08:57:49 pm »
Хотеть так хотеть. Нужна выгрузка графического буфера (области) в двумерный массив. Ну и конечно же доделать CALL.

dramster

  • Герой форума
  • *****
  • Сообщений: 956
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #587 : Март 25, 2019, 09:01:35 pm »
Хотеть так хотеть. Нужна выгрузка графического буфера (области) в двумерный массив. Ну и конечно же доделать CALL.
Зачем двумерный?  :-\
 Просто перенести из памяти поочередно цвета в массив, этого достаточно.

Hito

  • Герой форума
  • *****
  • Сообщений: 912
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #588 : Март 26, 2019, 09:48:54 am »
И пришел к выводу, что вот это:
хоть сокрытия, хоть шифрования
Просто не работает, чтото не получилось, и Джонни исправит... надеемся.

Я в принципе так и подумал, что по замыслу, если прописываешь в скрипте:
Код: Clickermann
  1. #preprocessor "comas.dll"
  2. halt
То при остановке скрипта, в нем только эти строки и должны оставаться, а все, что dll в него добавляла, должно оставаться где-то внутри кликера и не отображаться в скрипте.
« Последнее редактирование: Март 26, 2019, 09:50:52 am от Hito »
Я не ду... Потому и не бу...

ya12

  • Освоившийся
  • **
  • Сообщений: 95
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #589 : Март 26, 2019, 11:16:13 am »
Что бы искать в определенной строке, ну и операции с матрицами делать удобней.
Я бы еще и от поддержки разных типов данных не отказался, но это фантастика.

dramster

  • Герой форума
  • *****
  • Сообщений: 956
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #590 : Март 26, 2019, 12:00:28 pm »
Что бы искать в определенной строке, ну и операции с матрицами делать удобней.
Этож двойное увеличение сохроняемой информации,. Нахера? Нам же потом еще работать с этим всем.
И в файлах, и в той же памяти кликера, никакой двумерности, просто идут цвета поочереди. И никто не жалуется. Номер элемента массива - вот тебе и координата.
Главное заранее знать разрешение. Или ты чтото другое, не координаты, хотел писать внагрузку пиксельному массиву?
« Последнее редактирование: Март 26, 2019, 12:07:22 pm от dramster »

ya12

  • Освоившийся
  • **
  • Сообщений: 95
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #591 : Март 26, 2019, 12:17:58 pm »
Двумерные массивы сами по себе хороши. С другой стороны можно обработку многомерных массивов и в dll делать (когда будет удобный выход).

ps Расчеты в компьютерной графике под 2-3х мерные массивы заточены.
« Последнее редактирование: Март 26, 2019, 12:21:37 pm от ya12 »

dramster

  • Герой форума
  • *****
  • Сообщений: 956
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #592 : Март 29, 2019, 01:12:20 am »
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением

Чтото я так прикинул, это же лишнее  :-\ . Никто не запрещал ранее удалять массив перед его новой записью если нужно, по крайней мере я привык. А вот часто бывает нужда именно добавления процедурами новых данных в массив. Сейчас приходится в этих случаях создавать дополнительный массив для хранения информации, и перекидывать ее  в него.

Johnny

  • Создатель
  • Герой форума
  • *
  • Сообщений: 587
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #593 : Март 31, 2019, 09:33:24 am »
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением

Чтото я так прикинул, это же лишнее  :-\ . Никто не запрещал ранее удалять массив перед его новой записью если нужно, по крайней мере я привык. А вот часто бывает нужда именно добавления процедурами новых данных в массив. Сейчас приходится в этих случаях создавать дополнительный массив для хранения информации, и перекидывать ее  в него.

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

и да, про препроцессор и правда недоработочка... исправили
« Последнее редактирование: Март 31, 2019, 10:20:01 am от Johnny »

Hito

  • Герой форума
  • *****
  • Сообщений: 912
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #594 : Март 31, 2019, 10:45:04 pm »
и да, про препроцессор и правда недоработочка... исправили
Здесь нет смайла с фейерверками... ;D
А... Как бы вопрос... А где качать исправленную версию...? Там же?
« Последнее редактирование: Март 31, 2019, 11:34:29 pm от Hito »
Я не ду... Потому и не бу...

Johnny

  • Создатель
  • Герой форума
  • *
  • Сообщений: 587
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #595 : Апрель 03, 2019, 07:06:22 pm »
Patch 4.14.002b

https://yadi.sk/d/7CYIVwReKaelpA

Исправлен ехе файл, справка
Добавлена процедура arrconcat

Hito

  • Герой форума
  • *****
  • Сообщений: 912
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #596 : Апрель 03, 2019, 09:07:28 pm »
Вот сейчас я туплю страшно и чего-то не понимаю, или препроцессор как-то не так опять работает...?
и да, про препроцессор и правда недоработочка... исправили

Patch 4.14.002b

https://yadi.sk/d/7CYIVwReKaelpA

Исправлен ехе файл, справка
Добавлена процедура arrconcat

На сколько я понял, в 4.14.002b препроцессор исправлен? Одно точно - он стал работать по-другому с примером в папке "PrepSample". Теперь, при открытии редактора, после отработки скрипта, скрипт такой же, какой и было до запуска, но...

Код делфи:
Код: Clickermann
  1. // Основное тело функции, идет на экспорт, вызывается из кликера
  2. function execute( pText: PWideChar): PWideChar; export; stdcall;
  3. var
  4. strbuf: String;
  5. wc_res: PWideChar;
  6. begin
  7.  // Пишем сразу готовый код
  8.   strbuf :=  '#preprocessor "comas.dll"' + #13#10 +
  9.    'LOGSHOW (1, 100, 100 )'+ #13#10 +
  10.    'print("Тестовый текст")'+ #13#10 +
  11.    'halt' ;
  12.  
  13.  // ShowMessage(strbuf);    //можно глянуть наш код
  14.   wc_res := PWideChar(strbuf);
  15.  
  16.   result := wc_res;
  17. end;

Код кликермана:

Код: Clickermann
  1. #preprocessor "comas.dll"
  2. halt

Вот это все намутит не возможно. Стоит состряпать свою длл и заменить ею ту, что находится в примере и кликер просто не даст применить скрипт...
Я не ду... Потому и не бу...

dramster

  • Герой форума
  • *****
  • Сообщений: 956
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #597 : Апрель 03, 2019, 09:20:52 pm »
 ??? Да не, я проверил, работает отлично.

Весь код делфи:
Код: Clickermann
  1. library PrepSample;
  2.  
  3. uses
  4.  Vcl.Dialogs,
  5.  SysUtils;
  6.  
  7. //------------------------------------------------------------------------------
  8. // Основное тело функции, идет на экспорт, вызывается из кликера
  9. function execute( pText: PWideChar): PWideChar; export; stdcall;
  10. var
  11. strbuf: String;
  12. wc_res: PWideChar;
  13. begin
  14.  // Пишем сразу готовый код
  15.   strbuf :=  '#preprocessor "comas.dll"' + #13#10 +
  16.    'LOGSHOW (1, 100, 100 )'+ #13#10 +
  17.    'print("Тестовый текст")'+ #13#10 +
  18.    'halt' ;
  19.  
  20.  // ShowMessage(strbuf);    //можно глянуть наш код
  21.   wc_res := PWideChar(strbuf);
  22.  
  23.   result := wc_res;
  24. end;
  25. //------------------------------------------------------------------------------
  26.  
  27. // список экспорта
  28. exports execute;
  29.  
  30. begin
  31.  // тело пусто
  32. end.

Код кликера:
Код: Clickermann
  1. #preprocessor "test.dll"
  2. halt

Скомпилированная  "test.dll" рядом с сохраненным cms

Результат:


И как я не пытался, код в редакторе так и не увидел   :)


Hito

  • Герой форума
  • *****
  • Сообщений: 912
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #598 : Апрель 03, 2019, 09:23:34 pm »
Етит... Я "exports execute;" забыл прописать...
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Сообщений: 912
    • Просмотр профиля
Re: [Alpha/Beta Testing]
« Ответ #599 : Апрель 06, 2019, 12:39:24 pm »
Весь код делфи:
Код: Clickermann
  1. library PrepSample;
  2.  
  3. uses
  4.  Vcl.Dialogs,
  5.  SysUtils;
  6.  
  7. //------------------------------------------------------------------------------
  8. // Основное тело функции, идет на экспорт, вызывается из кликера
  9. function execute( pText: PWideChar): PWideChar; export; stdcall;
  10. var
  11. strbuf: String;
  12. wc_res: PWideChar;
  13. begin
  14.  // Пишем сразу готовый код
  15.   strbuf :=  '#preprocessor "comas.dll"' + #13#10 +
  16.    'LOGSHOW (1, 100, 100 )'+ #13#10 +
  17.    'print("Тестовый текст")'+ #13#10 +
  18.    'halt' ;
  19.  
  20.  // ShowMessage(strbuf);    //можно глянуть наш код
  21.   wc_res := PWideChar(strbuf);
  22.  
  23.   result := wc_res;
  24. end;
  25. //------------------------------------------------------------------------------
  26.  
  27. // список экспорта
  28. exports execute;
  29.  
  30. begin
  31.  // тело пусто
  32. end.
Я правильно понимаю? Строка
Код: Clickermann
  1. '#preprocessor "comas.dll"' + #13#10 +
лишняя? Ведь она уже есть в начальном скрипте кликера и, благодаря ей, кликер и вызывает код из длл...
Я не ду... Потому и не бу...