Консультация № 177659
04.04.2010, 03:31
0.00 руб.
0 4 1
Добрый вечер Уважаемые эксперты.
Пожалуйста, подскажите.
Возможна ли работа на Delphi 7 с бинарными файлами. А именно с их шестнадцатеричными кодами?
Например, возможно ли в определенном файле в ячейке по адресу 134749h прочесть значение двух шестнадцатеричных чисел и записать в него новое значение, например 0Ah.

Обсуждение

Неизвестный
04.04.2010, 05:16
общий
это ответ
Здравствуйте, Dimon4ik.

Примерно так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var f: file of byte; // Объявляем файловую переменную
buf1,buf2: byte; // Временные значения
begin
assignFile(f,'c:\neon.avi'); // Связываем переменную с конкретным файлом
reset(f); // Открываем существующий файл
seek(f,$134749); // Переходм к заданной позиции
read(f,buf1); // в BUF1 считываем значение из текущей позиции
seek(f,$134749); // Переходм снова к заданной позиции т.к. указатель сместился
buf2:=$0A; // Задаем значение для записи
write(f,buf2); // записываем его в файл
closeFile(f); // Закрываем файл
end;
5
Все что нужно! Отлично! <br>Спасибо большое.
Неизвестный
04.04.2010, 11:14
общий
Тимошенко Дмитрий:
Спасибо. Все работает, только у меня один маленький вопрос, как сделать так чтобы в edit вывелся не сам символ кодирующийся ASCII кодом, а сам код. Например не 1, а 31. Вот как я использовал код, таким образом выводится только символ..
Код:

seek(f,StrToInt(edit1.Text)); // Переходм к заданной позиции
read(f,buf1);
edit2.text:=Char(unit1.buf1);


И еще одно, как в этой строке задать не число конкретное а Edit1.text?
buf2:=$0A;
Неизвестный
04.04.2010, 12:33
общий
Используйте функции IntToStr и обратную StrToInt. Т.е. edit2.text:=IntToStr(unit1.buf1); и наоборот buf2:=StrToInt(Edit1.Text);
А вообще вам стоит почитать в хелпе или литературе про преобразования типов.
давно
Мастер-Эксперт
21244
2095
06.04.2010, 02:43
общий
Это не ответ на вопрос, переношу в мини-форум.

Здравствуйте, Dimon4ik.
Ссылаясь на товарища Михаила Фленова, могу сказать, что в делфи есть встроенный ассемблер, и среди кода можно писать код на ассемблере. Его следует заключать между ASM .... END.
Ответил: Титов Евгений , 2-й класс
Дата отправки: 04.04.2010, 08:26

Форма ответа