XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
DioD

offline
Опыт: 45,134
Активность:
Парсер
Код:
function RS_Arrays takes integer ID,integer OffSet,integer Value returns nothing
    local integer RawID    = ID
    local integer RawSet   = OffSet
    local integer RawValue = Value
    if RawID > 511 then
        set RawID = 511
    endif
    if RawID < 0 then
        set RawID = 0
    endif
    if RawSet > 15 then
        set RawSet = 15
    endif
    if RawSet < 0 then
        set RawSet = 0
    endif
    set udg_LH_RS[RawID+512*RawSet] = Value
endfunction

function GetInit takes integer ID, integer OffSet returns integer
return udg_LH_RS[ID+512*OffSet]
endfunction

function Setup takes integer ID, string Data returns boolean
    local integer Set    = 0
    local integer IsInt  = 0
    local string  Temp   = ""
    local string  Check  = ""
    local boolean IsTrue = false
    local integer Slot   = 0
    local integer Last   = 1

    if SubString(Data,0,1) != "$" then
        return false
    endif
    
    loop
        set IsTrue = false
        set Set = Set+1
        set Temp = SubString(Data,Set,Set+1)
        set IsInt = S2I(Temp)
        set Check = I2S(IsInt)

        if Temp == Check then
            set IsTrue = true
        endif

        if Temp == ":" then
            set IsTrue = true
            call RS_Arrays(ID,Slot,S2I(SubString(Data,Last,Set)))
            set Last = Set + 1
            set Slot = Slot + 1
        endif

        exitwhen IsTrue == false
    endloop
    call RS_Arrays(ID,Slot,S2I(SubString(Data,Last,Set)))
    return true
endfunction


Мне было интересно и я решил написать небольшой парсер для чисел, это заняло 30 минут.

Система крайне просто так что любой может ей пользоваться.

Поддерживает только интегеры константы.

Работает намного быстрее кеша но может иметь только 512 записей по 16 чисел в каждой, так как использует только один массив.

Альтернатива констант функциям.

Если хоть кто-то заинтересовался допишу строки и можно будет использовать как очень удобный мэнеджер хранения числовых значений.
Старый 29.08.2006, 20:41
IceBear
Вождь Мирового Картостроя
offline
Опыт: 7,800
Активность:
Супер! Я хоть в строках ничего и не понял, но зато очень полезная вещь. Единственная просьба - хоть примерно сказать: какое приблизительно преимущество дает использование твоей функции, по сравнению с записью в кэш?
Старый 29.08.2006, 21:00
DioD

offline
Опыт: 45,134
Активность:
В 12 раз быстрее и гораздо проще сохранять информацию.
Setup(Номер,"$число:число")
Работает только с константами, тоесть если нужно случайное число придётся его генерировать вне функций парсера.
Отлично работает с множеством массивов, просто там где требуется сбрасывать число надо поставить сохранение в другой массив.
Старый 29.08.2006, 21:32
Markiz

offline
Опыт: 11,432
Активность:
Где-то я это видел...
Старый 30.08.2006, 01:08
DioD

offline
Опыт: 45,134
Активность:
Это РС, тока написал его я с нуля, даже не открывав функции
Старый 30.08.2006, 09:22
Toadcop

offline
Опыт: 54,313
Активность:
DioD я новую версию Тс УСП написал =) теперь она даёт возможность использовать свои функции для сохранения значения ! т.е.

я даю функцию в которой я имею доступ к
1)Мин Значения
2) Макс Значения
3) Просто значение
4) Это денамическое число
5) + блин забыл короче я скоро пример приведу...

да есть 3 кастом функции для Инта,Реала,Стринга !

+ иммет уникальные технологие получения чисел !

т.е. УСП ОЧЕНЬ универсальный ! ЗЫ это я про новую версию которую еще не выложил =)
Старый 14.09.2006, 14:42
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 16:32.