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

Pages: 1 ... 3 4 [5] 6 7 ... 14
61
Здравствуйте.

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

Спасибо.

62
Общие вопросы / Re: Зависает кликер.
« on: December 20, 2017, 07:20:05 AM »
На нет и суда нет.

63
Общие вопросы / Зависает кликер.
« on: December 19, 2017, 06:37:23 PM »
Здравствуйте.

Иногда зависает кликер, ошибку не выдаёт.
Ни на что не реагирует, крутится круг ожидания, а окно становится бледным.
Возникает сообщение - "Приложение не отвечает" и закрыть получается только через диспетчер задач.

Есть ли возможность как-то узнать причину ? м.б. есть какая отладочная галочка в настройках ?

64
Здрасте.

Иногда в цикле возникают ошибки при отсутствии очередного элемента массива. Как определять то, что в текущей ячейке уже ничего нет ?

Код ниже, не работает. Даёт ошибку выполнения строки.

Code: [Select]
IF ($arr [123] ! "")
   Всё в порядке.
ELSE
   Элемента массива нет.
END_IF

ARRSIZE не предлагать, в массиве много групп, длина определяется по главной, а ошибка происходит из-за отсутствия данных во второстепенной.

Спасибо !

65
Общие вопросы / Re: Проблемы с SOUND("*****.wav")
« on: December 08, 2017, 07:44:17 PM »
Понял.
Не лечится.

66
Понял.
Никак.

67
Здравствуйте.

Есть такая строчка:
Code: [Select]
$hash_podch = PXLCRC ($kont_x1, $kont_y1, $kont_x2, $kont_y2)

Координаты области всегда разные, зависит от обстоятельств.
Поиск по хешу в одной локации работает, т.к. заведомо известны координаты снятия хеша.
А в другой локации не к чему привязаться для определения координат окна, соответственно не зная размера окна ХЕШа, найти не получится ?
Только IF_PICTURE_IN ?

IF_PICTURE_IN очень медленно работает, картинок получится не одна тысяча и поиск займёт десятки секунд (

68
Общие вопросы / Проблемы с SOUND("*****.wav")
« on: November 30, 2017, 05:16:31 PM »
Здравствуйте.

Подскажите, лечится как-нибудь проблема с непостоянно проигрываемым звуковым файлом ? То же наблюдал и с BEEP.
Т.е. может проиграться, а может и нет.
Это проблема в моей системе, или у других такое же ?

69
dramster, спасибо.
Изначально не придал этому значения.
Попробовал и со строкой кликер действительно работает чертовски быстро !
Возможно программа Find file.exe сможет быстрее, надо пробовать.
Чтение файла в массив, а далее поиск в цикле среди строк, занимал 300 мсек в среднем.  Всего 380 строк, долго как-то, целую миллисекунду на строчку тратит.

Сделал в файле всё одной строкой.
Считывание, поиск позиции и вырезание требуемого участка заняло 8 !!! ВОСЕМЬ миллисекунд, что в 37 раз быстрее. По 0.02 мсек на обработку одной строки.
Этот результат меня полностью устраивает.

В строке было около 13 000 символов. На всякий случай увеличил её до 130 000 (такого объёма в игре никогда не будет) и в этом случае никаких ошибок не возникло, время же обработки выросло кратно увеличению информации.

СПАСИБО !!!

Vint, Ваш вариант сейчас изучу.

70
Code: [Select]
UNDEFINE($url)
$ank = "aicauro"
$url = ""
$v1 = 7
INIWRITE("name.ini","file","name_small.txt")
$start = $_ms
INIWRITE("name.ini","ank",$ank)
INIWRITE("name.ini","return","-1")

EXECUTE("Find file.exe")
WHILE(INT(INIREAD("name.ini", "return")) = -1)
   WAITMS(30)
   //LOGWRITE ("Ждём")
END_CYC
IF(INT(INIREAD("name.ini", "return")) = 1)
   LOGWRITE ("Строка есть в базе")
END_IF

Я так понял, в ИНИ файле находится информация для поиска.
Параметр file указывает на файл, это понятно.
Параметр return тоже ясно, если строка найдена то он равен 1.
Параметр ank берёт искомую строку. Почему именно ank ? Я не нашел описания функций Find file.exe, только Find.exe, там про АНК ничего нет.
В описании Find.exe есть параметр N, если его указать при запуске, то вернётся номер строки, пробовал в наш ИНИ файл вставлять, не получается.

И как Find file.exe понимает, что данные лежат в name.ini и возвращать результат нужно туда ?

Помогите разобраться.

71
Здравствуйте.

Хочу вернуться к данной теме - http://crapware.aidf.org/forum/index.php?topic=1011.0, а именно, к быстрому поиску при помощи утилиты Find file.exe.
Тогда проблема была успешно решена, но сейчас требуется не просто получить ответ - есть искомая комбинация букв/цифр в файле или нет, но и узнать номер строки в которой она находится.

Может ли Find file.exe такое ?
Помогите пожалуйста.

72
Общие вопросы / Re: Подпрограммы.
« on: November 27, 2017, 12:46:58 PM »
все дело в твоих метках перехода. скорее всего прыгаешь из цикла, и это все в подпрограмме, отсюда и глюки.
Да, прыгаю из цикла в подпрограмме (((((.
Но без подпрограммы придётся плодить кучу одинаковых инклюдов с отличающимися метками (((.

Попробую сейчас из цикла не выпрыгивать, а завершить и потом при помощи условий выполнить то, куда перепрыгивал. Вдруг заработает ...

ХВАЛА НЕЙРОНАМ !!!
Да, из цикла нельзя выходить в подпрограмме. Похоже и END_CYC и END_SUB используют один стек для хранения точки возврата для указателя команд ... во всяком случае, мне как программисту на ассемблере это так видится.

Заработало.

73
Общие вопросы / Re: Подпрограммы.
« on: November 27, 2017, 12:35:21 PM »
Как только я эту подпрограмму вынимаю из SUB и как раньше ставлю просто в инклюд, всё работает правильно.
Но ведь инклюд не вставишь несколько раз в тело основной программы, в нём метки перехода =(((((((((((((.

74
Общие вопросы / Re: Подпрограммы.
« on: November 27, 2017, 11:37:05 AM »
Блин, программа настолько запутана, что только самому разбираться.
У меня по END_SUB не выходит, а почему-то перепрыгивает без всяких GOTO выше в тело подпрограммы ... и так пару раз делает, только после этого выходит.
Это я понял поставив везде LOGWRITE ("1"), с разными индексами.
В порпрограмме есть инклюды, в которых тоже подпрограммы.

Вот когда я из подпрограммы вынес инклюд, сделав его вызов по условиям работы этой подпрограммы, всё стало работать верно.

Выходит или я уже совсем запутался в коде, или в подпрограмме нельза делать инклюды в которых есть другие инклюды и вызовы подпрограмм.
ГаЛоВа кругом =).
Придется вынимать инклюды из подпрограммы, иначе не разберусь, а вам сюда давать огромный код бессмысленно. Там в основной проге 3 800 строк, и инклюдов полтора десятка с 500 до 2000 строк в каждом.

Не, не помогло.

В теле СУБа есть цикл FOR, и по команде END_SUB, программа перепрыгивает в этот цикл.

Code: [Select]
SUB (oprklass)
...
...
...
FOR ($fs = 0, $fs < $ind_klass, 1)
  logwrite ("1")
...
...
...
enklass:
logwrite ("2")
END_SUB
При выполнении этого кода в логе отображается:

1
2
1
2
1
2

и т.д.

Т.е. почему-то вместо выхода из подпрограммы, команда END_SUB заставляет перепрыгнуть в тело цикла. При этом, в цикле есть условие, которое по ELSE перекидывает выполнение на enklass:.

Голова уже почти лопнула ...

75
Общие вопросы / Подпрограммы.
« on: November 27, 2017, 10:09:10 AM »
Из подпрограммы вызывать программу нельзя что ли ?

Pages: 1 ... 3 4 [5] 6 7 ... 14