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 - winwebber

Pages: 1 [2] 3 4
16
Общие вопросы / Re: Длина строки
« on: April 23, 2019, 12:23:13 PM »
Может вот в это упирается
https://support.microsoft.com/ru-ru/help/830473.
Quote
Дополнительные сведения
На компьютерах под управлением Microsoft Windows XP или более поздних версий, максимальная длина строки, которую можно использовать в командной строке 8191 символов. На компьютерах под управлением Microsoft Windows 2000 или Windows NT 4.0 Максимальная длина строки, который можно использовать в командной строке составляет 2047 символов.

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

17
Общие вопросы / Re: Длина строки
« on: April 23, 2019, 12:19:55 PM »
Гдето уже наблюдалось. Насколько я ромню, размер сроки для переменной ограничен одним мегобайтом. Сейчас, с юникодно, это гдето будет 500 000 символов.
Да не, по моему уже 30 кб на тянет, 100 кб точно

18
Общие вопросы / Re: Кавычки
« on: April 23, 2019, 12:01:52 PM »
Quote
AAAAAAAAAAAAAAAAAA
и вот так, допустим, 25000 символов
$a=FROMCLIP()
print($a)
крэш
=========
Добавлено
соответственно не могу проверить длину и  обрезать или просто андефайн если с строка более длинная
strlen($a) -> крэш
Чем-то внешним проверять, видимо так
=========================
Добавлено.
 Итак попробывал измерить размер строки через бат файл, хотел было спросить какие идеи по интеграции в кликерман, но он тоже крешится на строке дилной до 9000. Пример скрипта.
Code: [Select]
@echo off
 
set "s=AAAAAAA"
 
for /f %%i in ('">$ cmd/v/c echo.!s!& echo $"') do set/a l=%%~zi-2& del $
 
echo %l%
 
pause>nul

19
Общие вопросы / Re: Кавычки
« on: April 23, 2019, 11:42:40 AM »
Точно, я не могу отловить краш.
Вероятнее всего всё упирается в буфер. Если начинаю копировать большой текст. Даже однородны например повторяющаяся буква, в какой-то момент (по мере увеличения количества) приложение начинает крэшиться.

Где можно почитать, об этом. Не могу понять, какой-то текст больше размера проходит, какой-то меньшего крэшит. Не могу найти закономерность Как вариант не хватает памяти. Но диспетчер показывает что свободно 50% (из 8 гб)

Куда копать?

20
Общие вопросы / Длина строки
« on: April 23, 2019, 11:16:17 AM »
Доброго всем дня.
Нашел тему, "Кавычки" в ошибках, давно не поднималась, может есть решение.
Задача.
1. Выделяем текст.
2. Копируем
3. $a=FROMCLIP()
4. print ($a)
Крэш кликермана, если в тексте были кавычки.
Есть решения?

21
Общие вопросы / FROMCLIP. Ограничения.
« on: March 27, 2019, 01:58:04 PM »
С определенного момента перестает вносить данные из буфера  в переменную.
Есть ли какие-то ограничения по этому вопросы (размер памяти на все переменные или на одну или ещё что-то).
Что имеем. Приблизительно
Code: [Select]
//copy text1
$text1=FROMCLIP()
//copy text2
$text2=FROMCLIP()
//copy text3
$text3=FROMCLIP()
Получается $text3=$text2, хотя в буфере был разный текст.
Если выделить весь текст одноверменно (text1+text2+text3), поместить в буфер и попробывать всунуть в переменную, кликерман подвисает и через пару секунд крашиться.
PS. Размер (text1+text2+text3) <30 kbyte

22
Oraven , всем спасибо, кто отвечал.
У меня твой вариат почи подошел, но немного подернизировал потому что терял в твоем варианте последниитри точки (координаты), вот что у меня получилось.
Code: [Select]
SCANPICTURE($arr,0,0, 1980,1040,"./bmp/line.bmp")
print("Before")
WHILE (arrsize($arr) > 0)
 $y_term = arrpop($arr)
 $x_term = arrpop($arr)
 print ($x_term,",",$y_term)
END_CYC   
print("After")
SCANPICTURE($arr,366,188, 1084,1043,"./bmp/line_messaging.bmp")
////is network list loaded
$sz = ARRSIZE($arr)-1
FOR($i=0,$i<$sz/2)
   $tmp = $arr[$i]
   $arr[$i] = $arr[$sz-$i]
   $arr[$sz-$i] = $tmp
END_CYC
WHILE (arrsize($arr) > 0)
 $x_term=arrpop($arr)
 $y_term=arrpop($arr)
 print ($x_term,",",$y_term)
END_CYC
Code: [Select]
10:59:35 AM Before
10:59:35 AM 459,1010
10:59:35 AM 459,914
10:59:35 AM 459,818
10:59:35 AM 459,733
10:59:35 AM 459,648
10:59:35 AM 459,563
10:59:35 AM 459,478
10:59:35 AM 459,393
10:59:35 AM 459,308
10:59:35 AM 459,223
10:59:35 AM After
10:59:37 AM 459,223
10:59:37 AM 459,308
10:59:37 AM 459,393
10:59:37 AM 459,478
10:59:37 AM 459,563
10:59:37 AM 459,648
10:59:37 AM 459,733
10:59:37 AM 459,818
10:59:37 AM 459,914
10:59:37 AM 459,1010

23
Казалось простой вопрос но КАААК? у меня уже горит.
1
2
3
4
=>
4
3
2
1
Заранее благодарен

24
Предложения / UNDEFINEALL()
« on: February 01, 2019, 05:54:58 PM »
Обнуление всех переменных.
Сценарий отрабатывает. Сбрасываем всё. Иначе может сохранить.
Пример
Code: [Select]
$a=1
$b=2
arrpush($c, 3)
print($a,$b,$c[0])
UNDEFINEALL()
print($a,$b,$c[0])
Quote
1,2,3
0,0,0
Для чего. Пример.
1. Сброс флагов и меток.
В первом цикле сценария у нас есть две сущности.
Массив
И тригер при котором выходит из массива.
Словили тригер вышли из перебора, работаем дальше.
Во втором цикле, снова сознаем массив а в нем уже есть значения.
И тригер/метка поменялся, всё может сработать не в тов время.
2. Банально высвобождение памяти.
Просто в конце пишем UNDEFINEALL(). И начинаем всё с чистого листа, голова не болит.

25
Пока что первый что второй скрипт выдают
На примере второго скрипта.
Code: [Select]
logclear
$var534 = 1
$var758 = 1
$var111 = 1
 
SUB(SETVARLIST, $variable_names_list, $value)
   STRSEPARATE ($variable_names_list, ",", $arraylist)
   FOR($count = ARRSIZE($arraylist), $count > 0, -1)
      SETVAR(STRCONCAT("$", $arraylist[$count-1]), $value)
   END_CYC
   UNDEFINE($arraylist)
END_SUB
 
 
SETVARLIST("var534,var758", #FALSE)
 
PRINT("var534 = ", $var534, ", ", "var758 = ", $var758, " var111 = ", $var111)
 
HALT
Code: [Select]
5:22:39 PM var534 = 0, var758 = 0 var111 = 1
Я конечно понимаю, что писать чисто и всё такое.
Но разве это не логично UNDEFINEALL(). Чистит все переменные. Всё с нуля.
В вашем примере мне нужно вызвать подпрогрмму, в которой, перечистить названия переменных. Более 100 файлов, думаю в 5-30 переменных в каждом. Как мне их искать? Таким же успехом я могу сделать UNDEFINE(). С мысл в  тож что я душе не "люблю" сколько  у меня переменных и как они называются. Знаю что, "много". Надо все обнулить.
 Ну и соответственно
Code: [Select]
logclear
$a=1
$bb=2
$ccc=3
 
FOR($count = 3, $count > 0, -1)
   SETVAR(STRCONCAT("$", CHAR(STRCONCAT("0x4", $count))), #TRUE)
END_CYC
 
PRINT("a = ", $a, ", bb = ", $bb, ", ccc = ", $ccc)
 
FOR($count = 3, $count > 0, -1)
   SETVAR(STRCONCAT("$", CHAR(STRCONCAT("0x4", $count))), #FALSE)
END_CYC
 
PRINT("a = ", $a, ", bb = ", $bb, ", ccc = ", $ccc)
 
HALT
Code: [Select]
5:41:01 PM a = 1, bb = 2, ccc = 3
5:41:01 PM a = 0, bb = 2, ccc = 3

26
Тестиру, что-то пока не получается когда добаляю переменную, но не хочу дергать по-пусту, где-то сам косячу вполне возможно. В процессе. Отпишу.

27
$c[0] = 1  //это твое переменная а
$c[1] = 32 //это твое переменная б
$c[2] =  3 //это твое переменная с
$c[3] = 66 //это твое переменная д
...... и так далее

//делаем все наши дела, и в конце обнуляем все их одним махом
UNDEFINE($c)

Вот это скорее всего имел ввиду кирил.
Вероятнее всего.
Но скрипт состоит из более 100 файлов, и не самых оптимизированны, т.е. кода много, боюсь подумать даже сколько переменных. Не все получается в SUB обернуть. Это как минимум нечитаемо будет и не отлаживаемо, если все переменные одним массивом представить.
Quote
Еще как вариант, написать скрипт, который будет из всего текста кода фильтровать все переменные, и создаст соответствующие строки с обнулением их.
Надо подумать.

28
arrpush вносит значение переменных, а не сами переменные, наверно в этом направлении копать надо, но не накопал

29
Подниму тему, так и не получилось решить вопрос.
В идеале конечно найти решение близкое к UNDEFINEALL()
Но даже
можно, внесите все используемые переменные в массив и очищайте его одной командой.
Не понял как это работает, что имелось в виду, попробовал так, но
Code: [Select]
logclear
$a=1
$b=2
print("$a=",$a)
print("$b=",$b)
arrpush($c,$a)
arrpush($c,$b)
print("$c")
FOR($i=0,$i<arrsize($c))
 print("$c[",$i,"]=",$c[$i])
END_CYC
UNDEFINE($c)
print("$a=",$a)
print("$b=",$b)
print("$c")
FOR($i=0,$i<arrsize($c))
 print("$c[",$i,"]=",$c[$i])
END_CYC
halt
Code: [Select]
10:27:59 AM $a=1
10:27:59 AM $b=2
10:27:59 AM $c
10:27:59 AM $c[0]=1
10:27:59 AM $c[1]=2
10:27:59 AM $a=1
10:27:59 AM $b=2
10:27:59 AM $c

30
int работает
проблема была в лишних пробельных символах, а точнее в переводе строки.
Я просто более точно начал копировать, но возможно есть какой-то trim, который режет пробелы. Ну точнее пробелы порезать не сложно, а как убрать перевод строки? Может кому будет и полезно.

Все намного проще. Фильтровать строку нужно не путем удаления символов указанных в маске, а путем удаления всех символов не указанных в маске. И кликерман при математических действиях со строкой, в которой записано число, автоматом как-то понимает что это число.

Для примера возьмем строку с запятыми, пробелами, и переводом строки, вот такую:
Code: [Select]
100, 12
         12 2

И попробуем поизвращаться с этой строкой:
Code: (clickermann) [Select]
$str = FROMCLIP()

print($str) //смотрим начальную строку

$str = strfilter($str, "0123456789", 1 ) //фильтр

print("наша строка-число - ",$str)  //смотрим фильтрованную строку

print("")
print("математика:")
print($str + 2)   //смотрим результаты математики
print($str / 2)
print($str * 2)

halt

Лог:

Спасибо, красиво.

Pages: 1 [2] 3 4