Author Topic: Длина строки  (Read 3456 times)

0 Members and 1 Guest are viewing this topic.

winwebber

  • Освоившийся
  • **
  • Posts: 46
    • View Profile
Длина строки
« on: April 23, 2019, 11:16:17 AM »
Доброго всем дня.
Нашел тему, "Кавычки" в ошибках, давно не поднималась, может есть решение.
Задача.
1. Выделяем текст.
2. Копируем
3. $a=FROMCLIP()
4. print ($a)
Крэш кликермана, если в тексте были кавычки.
Есть решения?
« Last Edit: April 23, 2019, 12:11:59 PM by winwebber »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Кавычки
« Reply #1 on: April 23, 2019, 11:37:33 AM »
Версия кликера 4.13.014

Копирую строку в буфер
Code: [Select]
"текст" текст "текст" текст "текст
Исполняю код
Code: (clickermann) [Select]
$a=FROMCLIP()
print ($a)

HALT

Результат в логе
Code: [Select]
12:35:47 "текст" текст "текст" текст "текст

Никаких крашей.
« Last Edit: April 23, 2019, 11:40:54 AM by Oraven »

winwebber

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

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

Куда копать?

winwebber

  • Освоившийся
  • **
  • Posts: 46
    • View Profile
Re: Кавычки
« Reply #3 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
« Last Edit: April 23, 2019, 12:19:19 PM by winwebber »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Длина строки
« Reply #4 on: April 23, 2019, 12:16:20 PM »
Гдето уже наблюдалось. Насколько я помню, размер строки для переменной ограничен одним мегобайтом. Сейчас, с юникодом, это гдето будет 500 000 символов.
« Last Edit: April 23, 2019, 02:10:15 PM by dramster »

winwebber

  • Освоившийся
  • **
  • Posts: 46
    • View Profile
Re: Длина строки
« Reply #5 on: April 23, 2019, 12:19:55 PM »
Гдето уже наблюдалось. Насколько я ромню, размер сроки для переменной ограничен одним мегобайтом. Сейчас, с юникодно, это гдето будет 500 000 символов.
Да не, по моему уже 30 кб на тянет, 100 кб точно

winwebber

  • Освоившийся
  • **
  • Posts: 46
    • View Profile
Re: Длина строки
« Reply #6 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), наследуются другие процессы и все расширения переменных среды. При использовании командной строки для запуска пакетных файлов, это ограничение также применяется к обработке пакетных файлов.

winwebber

  • Освоившийся
  • **
  • Posts: 46
    • View Profile
Re: Длина строки
« Reply #7 on: April 23, 2019, 12:36:57 PM »
Кликерманн ведет себя странно.
Если начинать измерять строку
Code: [Select]
$a=FROMCLIP()
print(strlen($a))
Постепенно припобляя в буфер по 1000 символов он измеряет до 20000 и более.
Если закрыть кликерман и попробывать ему сразу скормить текст из буфера в 20000, то крэш.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Длина строки
« Reply #8 on: April 23, 2019, 12:55:31 PM »
Да действительно краш есть. У меня 500000 переваривает еще а уже 600000 гарантированно крашится.


winwebber

  • Освоившийся
  • **
  • Posts: 46
    • View Profile
Re: Длина строки
« Reply #9 on: April 23, 2019, 01:46:41 PM »
Да действительно краш есть. У меня 500000 переваривает еще а уже 600000 гарантированно крашится.
Пятьсот тысяч переваривается?

winwebber

  • Освоившийся
  • **
  • Posts: 46
    • View Profile
Re: Длина строки
« Reply #10 on: April 24, 2019, 02:59:26 PM »
Да действительно краш есть. У меня 500000 переваривает еще а уже 600000 гарантированно крашится.
Есть идеи от чего это может зависеть? Мне бы до 100000 хотя бы довести. Лучше больше, конечно.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Длина строки
« Reply #11 on: April 24, 2019, 03:31:30 PM »
Да действительно краш есть. У меня 500000 переваривает еще а уже 600000 гарантированно крашится.
Есть идеи от чего это может зависеть? Мне бы до 100000 хотя бы довести. Лучше больше, конечно.

У себя потестил. Версия кликера Clickermann v4.7.003 SE не падает даже при 55814400 символах.
Можешь пока скачать его.

Там правда функционал беднее.