Открыть любой файл в памятке?

В Блокноте вы можете открыть любой файл, и он отобразит необработанные данные внутри.

Я хотел бы сделать это в TMemo, но никак не мог понять, как это сделать.

Мне удалось найти этот код здесь.

Я преобразовал его в функцию и немного изменил для своих целей:

function OpenBinaryFile(var Data; Count: Cardinal): string;
var
  Line: string[80];
  i: Cardinal;
  P: PAnsiChar;
  nStr: string[4];
  SL: TStringList;
const
  posStart = 1;
  binStart = 7;
  ascStart = 57;
begin
  P := @Data;
  Line := '';

  SL := TStringList.Create;
  try
    for i := 0 to Count - 1 do
    begin
      if (i mod 16) = 0 then
      begin
        if Length(Line) > 0 then
          SL.Add(Trim(Line));

        FillChar(Line, SizeOf(Line), ' ');
        Line[0] := Chr(72);
      end;

    if P[i] >= ' ' then
      Line[i mod 16 + ascStart] := P[i]
    else
      Line[i mod 16 + ascStart] := '.';
    end;

    SL.Add(Trim(Line));

    Result := SL.Text;
 finally
    SL.Free;
  end;
end;

Он работает, но отображает только фиксированное количество символов в строке, как здесь:

enter image description here

Что мне нужно изменить, чтобы он заполнил все заметку так же, как Блокнот?

8
задан David Heffernan 8 March 2012 в 19:12
поделиться