Razi Опубликовано 19 июня, 2018 Поделиться Опубликовано 19 июня, 2018 Как отображать значение в hex в editbox на языке Lua? Например считываем 4-х байтное значение в editbox. Нужно чтоб это значение отображалось в hex. И также нужно записывать из editbox в hex формате. То есть для записи в адрес, нужно вводить в editbox'е значение в hex формате. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 июня, 2018 Поделиться Опубликовано 19 июня, 2018 В 19.06.2018 в 09:53, Razi сказал: значение в hex в editbox на языке Lua Показать Уже было - ТЫК 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 19 июня, 2018 Автор Поделиться Опубликовано 19 июня, 2018 считывать получилось одним методом Показать контент for x = 1, 3 do CEEditsnowbt[x].Text = string.format('0%X',readInteger(0x009E93E0+x*4)) end другим методом не получилось Показать контент for x = 1, 3 do CEEditsnowbt[x].Text = tonumer(readInteger(0x009E93E0+x*4),16) end как исправить ошибку? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 19 июня, 2018 Поделиться Опубликовано 19 июня, 2018 Не такой команды tonumer В CE 6.8 не работает вариант tonumber("0x9999",16). Работает tonumber("0x9999") Показать контент function DecToHex(stringValue) return string.format('0x%08X', stringValue) end function HexToDec(stringValue) return tonumber(stringValue) end function CEButton1Click(sender) UDF1.CEEdit1.Text = DecToHex(100) end function CEButton2Click(sender) local value = HexToDec(UDF1.CEEdit1.Text) print(value) end Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 19 июня, 2018 Автор Поделиться Опубликовано 19 июня, 2018 (изменено) В 19.06.2018 в 11:02, MasterGH сказал: В CE 6.8 не работает вариант tonumber("0x9999",16). Работает tonumber("0x9999") Показать а запись тогда как делать в адрес в hex формате? Следующий метод не работает как надо: Показать контент for x = 1, 3 do local currentCEEditsnowbt = CEEditsnowbt[x] writeInteger(0x009E93E0+x*4, string.format('0x%08X', currentCEEditsnowbt.Text)) end Изменено 19 июня, 2018 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 июня, 2018 Поделиться Опубликовано 19 июня, 2018 В 19.06.2018 в 11:22, Razi сказал: тогда как делать в адрес в hex формате? Показать Я сделал сейчас так: 1. LUA Показать контент function CEButton1Click(sender) text= tonumber(UDF1.CEEdit1.Text, 16) writeInteger('071793B0', text) end 2. скрин: 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 19 июня, 2018 Поделиться Опубликовано 19 июня, 2018 В 19.06.2018 в 11:22, Razi сказал: а запись тогда как делать в адрес в hex формате? Показать Если CE 6.8, то Показать контент for x = 1, 3 do local address = 0x009E93E0 + x * 4 local stringValue = CEEditsnowbt[x].Text local intValue = tonumber(stringValue) writeInteger(address, intValue) end Если CE 6.7 и ниже Показать контент for x = 1, 3 do local address = 0x009E93E0 + x * 4 local stringValue = CEEditsnowbt[x].Text local intValue = tonumber(stringValue,16) writeInteger(address, intValue) end В "CEEditsnowbt[x].Text" должна быть строка с префиксом "0x", т.е. "0x100" например Предлагаю использовать пошаговую отладку Lua для разбора какие значения в каких переменных. Показать контент Подробнее 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 19 июня, 2018 Автор Поделиться Опубликовано 19 июня, 2018 (изменено) Версия CE 6.5. Получилось некоторое время назад, как раз именно так, как предлагаете: Показать контент for x = 1, 3 do local currentCEEditsnowbt = CEEditsnowbt[x] CEEditsnowbt[x].OnKeyPress = function(sender, key) timer.Enabled = false local a = tonumber(sender.Text) if (a~=nil) and isKeyPressed(VK_RETURN) then local tohex=tonumber(currentCEEditsnowbt.Text,16) --в hex writeInteger(0x009E93E0+x*4, tohex) timer.Enabled = true end return key end end А вот другие методы, чтения/записи в hex, не захотели работать. Изменено 19 июня, 2018 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 23 июня, 2018 Поделиться Опубликовано 23 июня, 2018 local a = 1000 UDF1.CEEdit1.Tex = string.format('%X', a) -- ( X - заглавные, x - маленькие ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения