Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 780

•  TDictionary Custom Sort  5 893

•  Fast Watermark Sources  5 689

•  3D Designer  8 462

•  Sik Screen Capture  6 027

•  Patch Maker  6 471

•  Айболит (remote control)  6 465

•  ListBox Drag & Drop  5 325

•  Доска для игры Реверси  94 896

•  Графические эффекты  6 671

•  Рисование по маске  5 779

•  Перетаскивание изображений  4 848

•  Canvas Drawing  5 225

•  Рисование Луны  4 946

•  Поворот изображения  4 489

•  Рисование стержней  3 182

•  Paint on Shape  2 426

•  Генератор кроссвордов  3 303

•  Головоломка Paletto  2 611

•  Теорема Монжа об окружностях  3 395

•  Пазл Numbrix  2 246

•  Заборы и коммивояжеры  2 904

•  Игра HIP  1 874

•  Игра Go (Го)  1 786

•  Симулятор лифта  2 122

•  Программа укладки плитки  1 854

•  Генератор лабиринта  2 292

•  Проверка числового ввода  1 980

•  HEX View  2 289

•  Физический маятник  1 954

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Считать двоичный файл и отобразить значение байт как ASCII



Оформил: DeeCo

type
   TDisplayProc = procedure(const s: string) of object;

 procedure ShowBinary(var Data; Count: Cardinal; DispProc: TDisplayProc);

 implementation


 procedure ShowBinary(var Data; Count: Cardinal; DispProc: TDisplayProc);
 var
   line: string[80];
   i: Cardinal;
   p: PChar;
   nStr: string[4];
 const
   posStart = 1;
   binStart = 7;
   ascStart = 57;
   HexChars: PChar = '0123456789ABCDEF';
 begin
   p    := @Data;
   line := '';
   for i := 0 to Count - 1 do
   begin
     if (i mod 16) = 0 then
     begin
       if Length(line) > 0 then
         DispProc(line);
       FillChar(line, SizeOf(line), ' ');
       line[0] := Chr(72);
       nStr    := Format('%4.4X', [i]);
       Move(nStr[1], line[posStart], Length(nStr));
       line[posStart + 4] := ':';
     end;
     if p[i] >= ' ' then
       line[i mod 16 + ascStart] := p[i]
     else
       line[i mod 16 + ascStart] := '.';
     line[binStart + 3 * (i mod 16)]     := HexChars[(Ord(p[i]) shr 4) and $F];
     line[binStart + 3 * (i mod 16) + 1] := HexChars[Ord(p[i]) and $F];
   end;
   DispProc(line);
 end;


 procedure TForm1.Display(const S: string);
 begin
   Memo1.Lines.Add(S);
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   ms: TMemoryStream;
 begin
   if Opendialog1.Execute then
   begin
     ms := TMemoryStream.Create;
     try
       ms.LoadFromfile(OpenDialog1.FileName);
       ShowBinary(ms.Memory^, ms.Size, Display);
     finally
       ms.Free
     end;
   end;
 end;




Похожие по теме исходники

Чтение PSD файлов

Шифратор файлов

Разбиение файла на части

Поиск файлов

 

FileMan (менеджер файлов)

Поиск открытых файлов

Текст внутри файла

AsciiMaker

 



Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте