Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2012, 14:37   #1
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию file->HEX HEX->BIN

Собственно задание дал препод:
1. Получить HEX данные из файла .exe и сохранить hex код в 1.txt
2. Данный HEX преобразовать в бинарный и записать в test.exe
Т.е. некое копирование файла происходит
kakawkin вне форума Ответить с цитированием
Старый 25.04.2012, 01:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

решение первой части задачи.
Код:
program Project4;

{$APPTYPE CONSOLE}
uses
  SysUtils,
  Classes;

const
  FileExecutableName = 'файл.exe';
  TextFileName = '1.txt';
  MaxByteInString = 16;
var
  ts : TStringList;
  tf : TFileStream;
  OneByte : byte;
  s : string;
  kByteInStringCount : integer;
begin
  if not FileExists(FileExecutableName) then WriteLn('#Error! File ',FileExecutableName,' not found!')
  else begin
     try
       try
         tf := TFileStream.Create(FileExecutableName, fmOpenRead or fmShareDenyNone);
         ts := TStringList.Create;

         kByteInStringCount := 0;
         s := '';
         while tf.Position < tf.Size do begin
           tf.Read(OneByte, 1);
           s := s + IntToHex( OneByte, 2 ) + ' ';
           inc(kByteInStringCount);
           if kByteInStringCount>=MaxByteInString then begin
              ts.Append( s );
              kByteInStringCount := 0;
              s := '';
           end;
         end;

         {допишем остаток (последнюю строку}
         if kByteInStringCount>0 then
              ts.Append( s );

         {сохраним результат в текстовый файл }
         ts.SaveToFile(TextFileName);


       except
         WriteLn('#Error! File ',FileExecutableName,' cannot be read!');
       end;
     finally
       FreeAndNil(ts);
       FreeAndNil(tf);
     end;
  end;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правка EXE файла посредством bin/hex редактора. Вопрос о возможности увеличения длинны строки Вадим Мошев Общие вопросы по программированию, компьютерный форум 7 25.02.2012 00:02
перевод чисел из hex в bin. ASM. crashmanx Помощь студентам 0 25.12.2011 21:35
Перевод данных в двоичной системе(Bin) находящиеся в memo1 в шестнадцатиричную(Hex) в поле memo2 alenkov Общие вопросы Delphi 1 31.10.2010 00:32
Перевод BIN -> HEX Piar Помощь студентам 2 20.05.2009 15:44