Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Узнаем сколько If End_if в коде
Zenogiasu
сообщение 16.4.2025, 16:51
Сообщение #1


***

Novice
Сообщений: 59
Регистрация: 3.12.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.434
Возраст: 28



Было очень нужно узнать не забыл ли где поставить конец условия в очень большом коде. Спросил, но видимо никто не знает. Вручную проверка заняла бы часа 2.
Нашел способ. Через программу Notepad++ и подобные. А также сгодится даже html документ, в котором вы откроете ваш код, единсвтенное что надо - это функция подсчета нужных элментов в коде.
Открываем в текстовом редакторе ваш код, и через контрл+ф ищем нужные вещи.

Но перед этим надо проделать определенную работу.

Сначала в коде нужно уделить все закомментированные условия и закоментированные концы условий, так как при поиске они также будут находиться.
Далее убрать все комментарии после концов условий по типу end_if // конец проверки чего-то там
Теперь приступаем к подсчету. Искать будем сколько If, if_not - end_if в коде
Вводим в поиск if (с пробелом после if), жмем кнопку подсчитать и видим поличество, запоминаем.
Далее вводим if_ жмем подсчитать - видим количество if_not'ов, прибавляем это количество к числу ифоф, получаем количество условий if.
Потом вбиваем end_if и видим сколько концов условий. Сравниваем 2 числа и видим всё ли в порядке.

Если не порядок - придется как-то побыстрее выяснить где проблема. Если код перестал работать после последних изменений то можно сразу посмотреть там. Если просто хочется проверить этот момент то я придумал так - удаляем половину кода и проводим вышеописанные поиски в половине кода. Если все нормально, значит проводим поиск во второй половине. Таким образом находим нужную половину с ошибкой и постепенно сокращаем код пока не доберемся до ошибки. В моем случае ошибка была в том что я не убрал 1 комментарий после end_if // чек чего-то, поэтому при поиске if(пробел) этот момент находился как доп условие.

Надеюсь кому-то помог.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 16.4.2025, 17:02
Сообщение #2


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



Не эксперт, но у того же блокнот+ есть возможность автоформатирования и, возможно, исправления. Луа должен мочь из коробки форматировать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 17.4.2025, 2:40
Сообщение #3


***********

Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29724
Пользователь №: 11.279



Хмм... Я же писал меню скрипт/форматировать. Если где-то накосячили, то у вас код визуально уедет. Чем это не подходит? Из коробки работает. Под notepad++ можно найти на формуе модуль пилотовского синтаксиса, который будет там форматировать код. Писал давно под рукой линка нет ибо давно уже Lua. На худой конец можно запихать код в notepad++ ввести в поиск "if " (с пробелом, но без кавычек) и нажать "найти все" - он при этом посчитает количество, аналогично делаем "end_if" (уже без пробела и без кавычек), получаем количество закрытий.
Глобально чтобы никогда таких проблем не было вы кода if открыли, пишите следующие строки со сдвигом вправо на 4 пробела, когда end_if - уменьшаете количесто отступов на 4 пробела. Таким образом вы не промахнетесь уже. Пример для луа, но смысл от этого вообще не меняется:
Код

while 1 do
    window = wnd.getforeground()
    workwindow(tonumber(ffi.cast("int", window)))
    local window_title = wnd.getwindowtext()

    local window_task = cfg[window_title]
    if window_task then
        for i = 1, #window_task do
            local task = window_task[i]
            local state, toggle = kbd.keystate(key[task[#task]])
            if state then
                if v.timeout < os.clock() then
                    if v.timeout ~= 0 then
                        kbd.send.down(v.button)
                        time.sleep(50)
                        kbd.send.up(v.button)
                        v.timeout = os.clock() + cooldown
                    else
                        v.timeout = os.clock() + cooldown*5
                    end

                end
            else
                v.timeout = 0
            end
        end
    end

    time.sleep(1)
end


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 30.7.2025, 23:46
Designed by Nickostyle