imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 20.11.2003, 19:35     # 1
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
Двоичные и текстовые фалы... (Для Delpher'ов)

Народ, подскажите, как определить на Delphi какой файл, текстовый или двоичный?
f00rd вне форума  
Старый 20.11.2003, 20:07     # 2
SpacerV
Guest
 
Сообщения: n/a

f00rd
Если я правильно понял вопрос, то вот такой есть вариант: анализировать файл побайтно до тех пор, пока не найдется один из символов #0..#8, #11..#12, #14..#31. Если символ с таким кодом найден, то файл двоичный, иначе - текстовый.
Если этот вариант тебе подходит и нужна реализация его на Делфи - напиши.
 
Старый 21.11.2003, 05:10     # 3
ImitatoR
Advanced Member
 
Аватар для ImitatoR
 
Регистрация: 01.10.2003
Адрес: Днепр
Пол: Male
Сообщения: 424

ImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собой
00h - верный признак бинарника

2SpacerV: Коды от 20h до 7Eh - это символы us-ascii, а ты написал #14..#31 - признак двоичного файла...

Последний раз редактировалось ImitatoR; 21.11.2003 в 05:53.
ImitatoR вне форума  
Старый 21.11.2003, 13:48     # 4
f00rd
::VIP::
 
Аватар для f00rd
 
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236

f00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форумеf00rd Популярный человек на этом форуме
SpacerV
Цитата:
Если этот вариант тебе подходит и нужна реализация его на Делфи
Напижи, если можно, на мыло: vitaliksite@mail.ru
f00rd вне форума  
Старый 21.11.2003, 15:51     # 5
SpacerV
Guest
 
Сообщения: n/a

ImitatoR
Числа 14..31 (0Eh..1Fh) не попадают в диапазон 32..126 (20h..7Eh).

Добавлено через 48 минут:
f00rd
Прока не длинная, так что помещаю на форуме:

Код:
function IsFileBinary(const FileName: string): boolean;
const
  BUF_SIZE = 4096;
var
  TargetFile: TFileStream;
  FileBuffer: array [0..BUF_SIZE-1] of byte;
  FileSize, BufSize, I: integer;
begin
  Result:=False;
  try
    TargetFile:=TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  except
    on E: Exception do
      raise Exception.CreateFmt('Не удалось открыть файл. '+
        'Дополнительная информация: "%s"', [E.Message]);
  end;
  FileSize:=TargetFile.Size;
  while TargetFile.Position<FileSize do
  begin
    BufSize:=TargetFile.Read(FileBuffer, BUF_SIZE);
    for I:=0 to BufSize-1 do
      case FileBuffer[I] of
        0..8, 11..12, 14..31, 255:
        { Для понимания текстовых файлов, созданных в старых редакторах,
          прийдется заменить пред. строку на:
        0..8, 14..25, 27..31, 255:}
        begin
          Result:=True;
          TargetFile.Free;
          Exit;
        end;
      end;
  end;
  TargetFile.Free;
end;

Последний раз редактировалось SpacerV; 21.11.2003 в 15:56.
 
Старый 21.11.2003, 16:43     # 6
CEO
Full Member
 
Аватар для CEO
 
Регистрация: 31.08.2003
Адрес: где-то между Марсом и Юпитером
Сообщения: 998

CEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собойCEO Имеются все основания чтобы гордиться собой
f00rd :Вот кстати и небольшая докементация по бинарному формату, для полной ясности.
Вложения
Тип файла: zip binar.zip (2.5 Кбайт, 5 просмотров - Кто скачивал? )
__________________
Старые игры раздают здесь
CEO вне форума  
Старый 22.11.2003, 20:36     # 7
ImitatoR
Advanced Member
 
Аватар для ImitatoR
 
Регистрация: 01.10.2003
Адрес: Днепр
Пол: Male
Сообщения: 424

ImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собойImitatoR Имеются все основания чтобы гордиться собой
Цитата:
SpacerV:
Числа 14..31 (0Eh..1Fh) не попадают в диапазон 32..126 (20h..7Eh).
Вижу Попутал спросонок # с $
ImitatoR вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 17:28.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.