Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Установка режима бинарного файла

Delphi , Файловая система , Файлы

Установка режима бинарного файла

Автор: Steve

Попробуйте вызвать приведенную ниже процедуру немедленно после перезаписи выходного файла и перед началом записи в него:


procedure SetBinaryMode(var F: file); assembler;
asm
  mov ax,$4400
  les di,F
  mov bx,word ptr es:[di]
  int $21
  or dl,$20
  xor dh,dh
  mov ax,$4401
  int $21
end;

Here's the translation into Russian:

Процедура SetBinaryMode! Это процедура ассемблерного языка, которая устанавливает бинарный режим для файла. При вызове она изменяет атрибуты файла, чтобы позволить запись бинарных данных в него.

Давайте разберемся, что делает каждая строка:

  1. asm: Это директива, которая сообщает компилятору, что следующий код написан на ассемблерном языке.
  2. mov ax,$4400: Перемещаем значение $4400 (которое представляет собой атрибут файла "нормальный" + "бинарный") в регистр AX.
  3. les di, F: Загружаем эффективную адресацию памяти переменной F в регистр DI.
  4. mov bx, word ptr es:[di]: Перемещаем содержимое памяти, указанное ES:DI (которое является handle файла), в регистр BX.
  5. int $21: Вызываем прерывание операционной системы (в этом случае DOS).
  6. or dl,$20: Выполняем битовый оператор OR для DL с 0x20 (флаг бинарного режима). Это устанавливает бинарный режим для файла.
  7. xor dh,dh: Очищаем регистр DH (не знаю почему, но это, вероятно, остаток из более старой версии кода).
  8. mov ax,$4401: Перемещаем значение $4401 (которое представляет собой атрибут файла "бинарный") в регистр AX.
  9. int $21: Вызываем еще одно прерывание операционной системы.

Когда вы вызываете эту процедуру, она устанавливает бинарный режим для файла, изменяя его атрибуты с помощью API DOS.

Альтернативное решение: Если вы ищете альтернативное решение, которое более портативно и не зависит от ассемблерного языка, вы можете использовать функцию Mode из модуля IOUtils в Delphi или Free Pascal. Вот пример:

procedure SetBinaryMode(F: file);
begin
  FileMode(F, fmBinText);
end;

Это код устанавливает режим файла на бинарный текстовый режим с помощью функции FileMode. Это более современное и платформо-независимое решение для установки режима файла.

Установка режима бинарного файла с помощью процедуры SetBinaryMode, которая изменяет кодировку файла на бинарную, позволяет записывать в файл без преобразования символов в кодовую страницу.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Файлы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:18:27/0.0053761005401611/1