Magic Team

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Magic Team » Программирование » Новый Hexpose


Новый Hexpose

Сообщений 1 страница 22 из 22

1

Пишу Hexpose, работающий в WinXP =)
http://magicteam.nm.ru/images/utils/Hexpose.png

0

2

Молодец!
Кстати, не знаешь где взять чего-нибудь по написанию Хекс-эдиторов?
Статьи какие-нибудь, подсказки...?

0

3

Подожди.... Ты чего - на ХРшку перешёл что-ли???!!!

0

4

Andrew Shtein написал(а):

Подожди.... Ты чего - на ХРшку перешёл что-ли???!!!

Перешёл, перешёл=) Хоть и дрянь, зато лучше чем Ме=)
Зачем мануалы по написанию хексредакторов? Если умеешь программировать, сам всё что хочешь напишешь =)

0

5

Издевайся, издевайся!
Программер великий, блин!
Я просто не знаю, с чего бы подступиться...
Я там накидал в Делфе быстренько небольшой Вьювер (через RichEdit) но это совершенно не то, что я хочу... Плюс работпет он не слишком быстро, и ресурсов жрёт кучу... :(

0

6

Andrew Shtein написал(а):

Я там накидал в Делфе быстренько небольшой Вьювер (через RichEdit) но это совершенно не то, что я хочу... Плюс работпет он не слишком быстро, и ресурсов жрёт кучу... :(

Чтобы кучу ресурсов не жрало, надо писать всё с нуля, без всякой лишней дефолтовой ерунды.

0

7

Да ну тебя... хоть бы раз чего-нибудь путного посоветовал :))
Вроде: "вот тебе, Эндрю, адрес, там найдёшь пару статей. Прочитай статьи, потренируйся, затем зайди по вот этому адресу, здесь почитай, портренируйся, и затем, если смекалка работает, обнаружишь что написал ты его..."
А ты всё: "Писать с нуля ,писать с нуля..." Это я и так знаю...
Или KOL использовать...

0

8

Andrew Shtein написал(а):

Плюс работпет он не слишком быстро, и ресурсов жрёт кучу... :(

Чтобы работал он быстро - загружай данные блоками.
Тут есть 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 - моя функция, превращающая десятичное число в шестнадцатиричное (по сути являющееся строкой).

0

9

А вообще реально Turbo Pascal'ем 7 написть RomHacking soft?

0

10

Напишу, выложу с исходниками. Пишу на TMT Pascal 3.90

Dimas написал(а):

А вообще реально Turbo Pascal'ем 7 написть RomHacking soft?

Реально, но в ХР он пахать не будет

0

11

Обьясни пожалуйста что такое TMT Pascal 3.90
И почему не на Делфи пишешь???

0

12

Dimas написал(а):

А вообще реально Turbo Pascal'ем 7 написть RomHacking soft?

Нафига тебе Паскаль, если есть Делфи?
Делфи - это тот же Паскаль, только круче. :cool:

0

13

Virtual_Killer написал(а):
Dimas написал(а):

А вообще реально Turbo Pascal'ем 7 написть RomHacking soft?

Нафига тебе Паскаль, если есть Делфи?
Делфи - это тот же Паскаль, только круче. :cool:

Я думаю Джин, хочет сделать его фейс похожим на старый.. :) ИМХО привычнее :))

0

14

Dimas написал(а):

Обьясни пожалуйста что такое TMT Pascal 3.90

http://pascal.sources.ru/tmt/download.htm

Dimas написал(а):

И почему не на Делфи пишешь???

Потому что пишу, вернее уже написал, досовскую прогу. Консольные проги в Delphi выходят не очень.
http://magicteam.nm.ru/utils.htm Вот =)
Кто качал час назад, качайте ещё раз =)

0

15

2 Virtual_Killer:
Спасибо! :) Попробую :)

0

16

Джин, это тольо у меня или так надо:),
кнопки от F1 и дальше не пашут!

0

17

Dimas написал(а):

Джин, это тольо у меня или так надо:),
кнопки от F1 и дальше не пашут!

Наверно только у тебя.

0

18

To Virtual_Killer:
Можешь поподробнее рассказать о BlockRead?

BlockRead(F,Rom[0],RomSize);

Rom[0] - как я понимаю поток, да?

0

19

Andrew Shtein написал(а):

Можешь поподробнее рассказать о 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, то будешь получать ложные сведения, так как обычно памяти выделяется больше, чем ты указываешь. А неверные данные о размере массива могут повлечь ошибки.

0

20

Djinn, спасибо за Hexpose, только им и пользуюсь. Но очень сильно не хватает возможности вводить цифры через дополнительный блок клавиатуры - это главный недостаток. Ты вроде бы где-то упоминал, что у тебя ноутбук? У меня тоже ноутбук, но я подключаю дополнительную клавиатуру. В своё время привыкла к эргономике, теперь не могу печатать на линейной. :lol: Так что если есть планы доработать Hexpose, то добавь, пожалуйста.

0

21

Приятно, что не только я им пользуюсь :) На счёт доработки, смотри личное сообщение.

0

22

http://magicteam.emu-land.net/utils.htm#HEXPOSE

0


Вы здесь » Magic Team » Программирование » Новый Hexpose