Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка файла в hex 
:(
    Опции темы
APXEOLOG
Дата 23.9.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.4.2007
Где: Мурманск

Репутация: нет
Всего: 1



Как откыть ллюбой файл в hex коде - желательно описать от начала и до конца.
Также его надо будет еще сохранить(опять же в hex)
--------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz.
PM MAIL ICQ   Вверх
Alkash
Дата 23.9.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



Код

begin
  {Если файл очень большой, то его бессмысленно сразу весь загружать в прогу,
  т.к. может даже не хватить памяти для этого. Будем загружать его по кусочкам}
  Caption := 'Редактор двоичных файлов - ' + OpenDialog1.FileName;
  MaxLineCount := (Memo.Height div Memo.Font.Size) * 60 div 100 - 1;
  fSize := FileSize(OpenDialog1.FileName); // Определяем размер файла

  ScrollBar1.Enabled := True;
  ScrollBar1.PageSize := 1;
  ScrollBar1.LargeChange := 1;
  ScrollBar1.Max := 100;
   // Вычисляем характеристики ScrollBar
  if (fSize div 16 - (MaxLineCount - 2)) > 1 then begin
    ScrollBar1.Max := fSize div 16 - (MaxLineCount - 2);
    ScrollBar1.PageSize := MaxLineCount div ScrollBar1.Max;
    ScrollBar1.LargeChange := MaxLineCount - 1;
  end else begin
    ScrollBar1.Max := 1;
    ScrollBar1.PageSize := 1;
    ScrollBar1.LargeChange := 1;
    ScrollBar1.Enabled := False;
  end;
  ScrollBar1.Position := 0;
  ScrollBar1Change(Sender);
end;


Код

var
  Fs: TFileStream;
  StartByte: Integer;
  BytesCount, MaxBytesCount: Integer;
  Ar: array[1..1000] of Byte;
  S, STxt: string;
  I: Integer;
  C: Byte;
  Pos: Integer;
  LastAdr: Integer;
begin
  // По позиции ползунка определяем, с какой строки надо начать
  // считывание инфы из файла

  if ScrollBar1.Max = 1 then StartByte := 0 else
    StartByte := ScrollBar1.Position * 16 - 16;
  MaxBytesCount := MaxLineCount * 16;
  if fSize - StartByte >= MaxBytesCount then BytesCount := MaxBytesCount else
    BytesCount := fSize - StartByte;

  MemSelStart := Memo.SelStart;
  Memo.Clear;
  Fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
  Fs.Seek(StartByte, soFromBeginning);
  Pos := Fs.Position;
  Fs.Read(Ar, BytesCount);
  Fs.Free;

  C := 0;
  LastAdr := 0;

  // Цикл заполнения окна Memo
  for I := 1 to BytesCount do begin
    Inc(C);
    S := S + IntToHex(Ar[I], 2) + ' ';
    if (Ar[I] = 0) or (Ar[I] = $09) or (Ar[I] = $0D) or (Chr(Ar[I]) = '')
      then STxt := STxt + Chr($10) else
      STxt := STxt + Chr(Ar[I]);

    if C = 8 then S[Length(S)] := '|';

    if (C = 16) then begin
      Inc(Pos, C);
      Memo.Lines.Append(IntToHex(Pos - 16, 8) + ': ' + S + '| ' + STxt);
      S := '';
      STxt := '';
      C := 0;
      LastAdr := Pos;
    end;

    if (I = BytesCount) and (C > 0) then begin
      while Length(S) < 48 do S := S + ' ';
      Memo.Lines.Append(IntToHex(LastAdr, 8) + ': ' + S + '| ' + STxt);
      Break;
    end; // if
  end; // for
  if MemSelStart > Length(Memo.Text) - 80 then
    MemSelStart := Length(Memo.Text) - 80;
  Memo.SelStart := MemSelStart;
end;



Код

var
  FS: TFileStream;
  B: Byte;
begin
  if LabeledEditHEX.Text = '' then Exit;
  B := Strtoint('$' + LabeledEditHEX.Text);
  FS := TFileStream.Create(OpenDialog1.FileName, fmOpenWrite);
  FS.Seek(StatusBar1.Tag, soFromBeginning);
  FS.Write(B, 1);
  FS.Free;
  ScrollBar1Change(Sender);
end;


Это сообщение отредактировал(а) Alkash - 23.9.2007, 16:14


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
APXEOLOG
Дата 24.9.2007, 05:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.4.2007
Где: Мурманск

Репутация: нет
Всего: 1



Я еще новичек и мб не понимаю ничего так что прось ба все разжевывать.
1.Не все переменные описаны(не нашел MaxBytesCount)
2.Надо что файл для открытия(имя будет забито) открывался из папки где лежит это прога.

И еще файл небольшой 200кб гдето так что можно полностью грузить.

Это сообщение отредактировал(а) APXEOLOG - 24.9.2007, 05:28
--------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz.
PM MAIL ICQ   Вверх
APXEOLOG
Дата 25.9.2007, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.4.2007
Где: Мурманск

Репутация: нет
Всего: 1



Никто не поможет что-ли  smile 
--------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz.
PM MAIL ICQ   Вверх
Snowy
Дата 25.9.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Цитата(APXEOLOG @  23.9.2007,  16:07 Найти цитируемый пост)
Как откыть ллюбой файл в hex коде
Что ты имеешь в виду?
Как это "открыть в hex коде"?
Можно его показать в шестнадцатеричном виде, если ты это имел ввиду.
Уточни вопрос. Что ты хочешь сделать? Какого результата ожидаешь? и для чего?
PM MAIL   Вверх
APXEOLOG
Дата 25.9.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.4.2007
Где: Мурманск

Репутация: нет
Всего: 1



Мне нужна программа для редактирования 2 файлов itemname.bin и itemname.ptk. Открывается форма, там указывается путь к этим файлам.Затем открывается другая форма на которой 2 эти файла представлены в виде кода.
При нажатии кнопочки сохранить все изменения в обоих кодах сохраняются в свои файлы.
--------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz.
PM MAIL ICQ   Вверх
Snowy
Дата 25.9.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Ну скачай какой-нить компонент hex редактора.
http://www.torry.net/pages.php?id=1176
PM MAIL   Вверх
DvarfInkvizitor
  Дата 30.10.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.7.2006
Где: М.о. г. Климовск

Репутация: нет
Всего: нет



Хочу поднять этот вопрос еще раз. В моей программе необходимо открывать файл именно в hex-коде и править некоторые значения, при этом выводить содержимое файла на экран не нужно. Отдельные редакторы меня не устроят, т.к. программа расчитана на автоматизацию процесса, и значения внутри файла могут измениться не один раз за время работы программы!
PM MAIL ICQ   Вверх
Alexeis
Дата 30.10.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(DvarfInkvizitor @  30.10.2007,  13:29 Найти цитируемый пост)
В моей программе необходимо открывать файл именно в hex-коде и править некоторые значения, при этом выводить содержимое файла на экран не нужно.

  Зачем тогда конвертить его в HEX? HEX же для людей придумали, машине проще с BIN работать...


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1135 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.