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

•  Animation Loaders  673

•  DeLiKaTeS Tetris (Тетрис)  5 679

•  TDictionary Custom Sort  7 643

•  Fast Watermark Sources  7 333

•  3D Designer  10 537

•  Sik Screen Capture  7 855

•  Patch Maker  8 079

•  Айболит (remote control)  8 141

•  ListBox Drag & Drop  6 935

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

•  Графические эффекты  8 198

•  Рисование по маске  7 598

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

•  Canvas Drawing  6 564

•  Рисование Луны  6 490

•  Поворот изображения  5 670

•  Рисование стержней  4 591

•  Paint on Shape  3 290

•  Генератор кроссвордов  4 281

•  Головоломка Paletto  3 418

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

•  Пазл Numbrix  2 750

•  Заборы и коммивояжеры  3 656

•  Игра HIP  2 462

•  Игра Go (Го)  2 443

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

•  Программа укладки плитки  2 293

•  Генератор лабиринта  3 014

•  Проверка числового ввода  2 514

•  HEX View  2 920

 
скрыть

  Форум  

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-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

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