Пишу Hexpose, работающий в WinXP =)
Новый Hexpose
Сообщений 1 страница 22 из 22
Поделиться12005-10-30 02:57:42
Поделиться22005-10-30 02:03:40
Молодец!
Кстати, не знаешь где взять чего-нибудь по написанию Хекс-эдиторов?
Статьи какие-нибудь, подсказки...?
Поделиться32005-10-30 02:05:04
Подожди.... Ты чего - на ХРшку перешёл что-ли???!!!
Поделиться42005-10-30 02:11:02
Подожди.... Ты чего - на ХРшку перешёл что-ли???!!!
Перешёл, перешёл=) Хоть и дрянь, зато лучше чем Ме=)
Зачем мануалы по написанию хексредакторов? Если умеешь программировать, сам всё что хочешь напишешь =)
Поделиться52005-10-30 02:18:58
Издевайся, издевайся!
Программер великий, блин!
Я просто не знаю, с чего бы подступиться...
Я там накидал в Делфе быстренько небольшой Вьювер (через RichEdit) но это совершенно не то, что я хочу... Плюс работпет он не слишком быстро, и ресурсов жрёт кучу...
Поделиться62005-10-30 02:23:56
Я там накидал в Делфе быстренько небольшой Вьювер (через RichEdit) но это совершенно не то, что я хочу... Плюс работпет он не слишком быстро, и ресурсов жрёт кучу...
Чтобы кучу ресурсов не жрало, надо писать всё с нуля, без всякой лишней дефолтовой ерунды.
Поделиться72005-10-30 03:21:24
Да ну тебя... хоть бы раз чего-нибудь путного посоветовал )
Вроде: "вот тебе, Эндрю, адрес, там найдёшь пару статей. Прочитай статьи, потренируйся, затем зайди по вот этому адресу, здесь почитай, портренируйся, и затем, если смекалка работает, обнаружишь что написал ты его..."
А ты всё: "Писать с нуля ,писать с нуля..." Это я и так знаю...
Или KOL использовать...
Поделиться82005-10-30 06:17:46
Плюс работпет он не слишком быстро, и ресурсов жрёт кучу...
Чтобы работал он быстро - загружай данные блоками.
Тут есть 2 варианта: либо ты загружаешь весь файл, либо часть.
1) Полную загрузку файла делать проще, один раз загрузил и никаких проблем. Загружать лучше всё одним блоком, это ускоряет процесс загрузки.
Пример полной загрузки (из Поганки):
Procedure LoadRom(RomName: String); var F: File; i:LongWord; Begin AssignFile(F, RomName); Reset(F,1); RomSize:=FileSize(F); SetLength(Rom,RomSize); BlockRead(F,Rom[0],RomSize); CloseFile(F); End;
RomSize и RomName - глобальные переменные.
2) Частичная загрузка - сложнее в реализации, но более универсална, так как можно загружать ОЧЕНЬ большие файлы. В данном случае я рекомендую загружать только те данные, которые отображаются в данный момент.
Скорость загрузки будет очень высокой... даже во время скроллинга данных. =)
Пример частичной загрузки (из одной незаконченной проги):
procedure TMainF.LoadPart(adress: LongWord); Var F: File; Begin AssignFile(F, FName); Reset(F,1); If FLoaded=False then //Если файл не загружен Begin FSize:=FileSize(F); FLoaded:=True; CurPos:=0; If FSize>319 then ScrollBar.Max:=(FSize div 16)-19 Else ScrollBar.Enabled:=False; StatusBar.Panels.Items[0].Text:='Offset: '+Int2Hex(CurPos); StringGrid.Enabled:=True; End; Seek(F,adress); //Переход по адресу If (CurPos<FSize-320) and (FSize>319) then BlockRead(F,Part[0],320) Else BlockRead(F,Part[0],FSize-CurPos); CloseFile(F); ShowHexes; End;
320 (16x20) - размер отображаемого сегмента данных в моей проге (в твоей может быть другой размер).
ShowHexes - процедура отображения данных.
Int2Hex - моя функция, превращающая десятичное число в шестнадцатиричное (по сути являющееся строкой).
Поделиться92005-10-30 07:15:35
А вообще реально Turbo Pascal'ем 7 написть RomHacking soft?
Поделиться102005-10-31 00:16:01
Напишу, выложу с исходниками. Пишу на TMT Pascal 3.90
А вообще реально Turbo Pascal'ем 7 написть RomHacking soft?
Реально, но в ХР он пахать не будет
Поделиться112005-10-31 05:18:53
Обьясни пожалуйста что такое TMT Pascal 3.90
И почему не на Делфи пишешь???
Поделиться122005-10-31 07:13:20
А вообще реально Turbo Pascal'ем 7 написть RomHacking soft?
Нафига тебе Паскаль, если есть Делфи?
Делфи - это тот же Паскаль, только круче.
Поделиться132005-10-31 14:17:41
Dimas написал(а):А вообще реально Turbo Pascal'ем 7 написть RomHacking soft?
Нафига тебе Паскаль, если есть Делфи?
Делфи - это тот же Паскаль, только круче.
Я думаю Джин, хочет сделать его фейс похожим на старый.. ИМХО привычнее )
Поделиться142005-10-31 18:53:16
Обьясни пожалуйста что такое TMT Pascal 3.90
http://pascal.sources.ru/tmt/download.htm
И почему не на Делфи пишешь???
Потому что пишу, вернее уже написал, досовскую прогу. Консольные проги в Delphi выходят не очень.
http://magicteam.nm.ru/utils.htm Вот =)
Кто качал час назад, качайте ещё раз =)
Поделиться152005-11-01 19:57:56
2 Virtual_Killer:
Спасибо! Попробую
Поделиться162005-11-02 08:03:03
Джин, это тольо у меня или так надо:),
кнопки от F1 и дальше не пашут!
Поделиться172005-11-02 20:12:31
Джин, это тольо у меня или так надо:),
кнопки от F1 и дальше не пашут!
Наверно только у тебя.
Поделиться182005-11-03 18:31:01
To Virtual_Killer:
Можешь поподробнее рассказать о BlockRead?
BlockRead(F,Rom[0],RomSize);
Rom[0] - как я понимаю поток, да?
Поделиться192005-11-04 03:02:48
Можешь поподробнее рассказать о BlockRead?
BlockRead(F,Rom[0],RomSize);
F - переменная типа File;
Rom - массив, в скобках указывается первый элемент, в который должны помещаться данные.
Ты можешь заполнять массив кусками. Ща сделаю примерчик:
Var Rom: array of Byte; //Динамический массив F: File; Begin AssignFile(F, RomName); //RomName - имя файла Reset(F,1); //открытие бинарного файла с размером записи = 1 байту SetLength(Rom,2048); //Задать длину динамического массива равную 2048 Seek(F,1024); //Перейти по адресу 1024 (если не переходить, то будет ноль) BlockRead(F,Rom[0],1024); //Чтение фрагмента файла в массив, начиная с нулевого элемента Seek(F,100000); //Перейти по адресу 100000 BlockRead(F,Rom[0],1024); //Чтение фрагмента файла в массив, начиная с 1024-го элемента End;
В итоге у нас в массиве будет 2048 байтов, причём последние 1024 - из другого места. =)
P.S.: Размер динамического массива лучше держать в какой-нибудь переменной. Если ты будешь пытаться измерить массив функцией Length, то будешь получать ложные сведения, так как обычно памяти выделяется больше, чем ты указываешь. А неверные данные о размере массива могут повлечь ошибки.
Поделиться202008-04-20 05:35:21
Djinn, спасибо за Hexpose, только им и пользуюсь. Но очень сильно не хватает возможности вводить цифры через дополнительный блок клавиатуры - это главный недостаток. Ты вроде бы где-то упоминал, что у тебя ноутбук? У меня тоже ноутбук, но я подключаю дополнительную клавиатуру. В своё время привыкла к эргономике, теперь не могу печатать на линейной. Так что если есть планы доработать Hexpose, то добавь, пожалуйста.
Поделиться212008-04-20 15:27:58
Приятно, что не только я им пользуюсь На счёт доработки, смотри личное сообщение.