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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2007, 15:25   #1
Dax
 
Регистрация: 17.06.2007
Сообщений: 3
По умолчанию Помогите заменить байты в файле

Вобщем мне нужно чтобы на оффсете 566787 заменить два байта на EA как сделать,подскажите плз

програмлю на Delphi for win32
Dax вне форума Ответить с цитированием
Старый 20.06.2007, 20:28   #2
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

А где это нужно заменить, в каком-нибудь файле или внутри работающей программы?
Jeni вне форума Ответить с цитированием
Старый 21.06.2007, 08:34   #3
Dax
 
Регистрация: 17.06.2007
Сообщений: 3
По умолчанию

обычный бинарный файл
Dax вне форума Ответить с цитированием
Старый 21.06.2007, 10:24   #4
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
Сообщение

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  Offset = 566787;
  или
  Offset = 566786;
var
  F: TFileStream;
  X: Word;
begin
  F := TFileStream.Create(<имя_файла>, fmOpenReadWrite);
  F.Position := Offset;
  F.Read(X, 2);

  X := $E * 256 + $A; // EA
  или
  X := $A * 256 + $E; // AE

  F.Position := Offset;
  F.Write(X, 2);
  F.Free;
end;
1. Я указал два возможных значения смещения, т.к. это зависит от того как ты его вычисляешь - в подпрограммах обработки файлов нумерация байт идет с нуля. Если твое число (566787) уже учитывает начальный "ноль", то используй первый вариант, иначе (если ты считал с единицы) - второй вариант.
2. Число X устанавливается двумя возможными способами. В первом варианте в переменной запишется число 'EA', но байты в числах хранятся "наоборот", поэтому в файл запишется последовательность 'AE' (обратно будет считаться в переменную как 'EA'). Во втором варианте в переменную число записывается как 'AE', зато в файл - в виде последовательности 'EA'. Возможно тебе больше подойдет второй способ.

Самое лучшее попробовать и так, и этак и смотреть после этого файл в HEX-редакторе.
Jeni вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Байты в стринги FaTaL Общие вопросы Delphi 9 18.04.2008 15:46
Заменить часы в трее Teen4jump Win Api 10 08.08.2007 12:26
Помогите пожалуйста найти и заменить слово в TStringList Aleno4ka Помощь студентам 3 24.02.2007 14:45
в каком виде хранится иконка в Exe-файле? как её из него вытащить/заменить? Holly1444 Общие вопросы Delphi 0 18.11.2006 13:56