64 базовая закодированная строка в двоичный файл - PullRequest
3 голосов
/ 31 октября 2011

У меня есть строка с 64 закодированными строками, которая содержит данные файла PDF.

Используя пространство имен EncdDecd, я могу декодировать строку в байтовый массив.

Вот где у меня возникают проблемы,Я попытался сохранить символы в строку, но как только он достигнет нулевого значения (ascii = 0), строка больше не добавляется ..

Пример
var
EncodedString: String;
Отчет:String;
Base64Bytes: TBytes;// содержит двоичные данные

begin
Base64Bytes := DecodeBase64(EncodedString);
for I := 0 to Length(Base64Bytes) - 1 do
    begin
        Report := Report + Chr(Base64Bytes[I]);
    end;
end;

Запись в текстовый файл, кажется, работает лучше, но после переименования в PDF-файл он открывается неправильно.

Как мне написатьв двоичный файл в Delphi?Или даже сохранить данные в поток?

В основном я просто пытаюсь взять закодированную строку и сохранить ее в PDF-файл или отобразить PDF в Delphi .

Спасибо

ps

Я немного осмотрелся и нашел возможное решение Сохранение строки Base64 на диск в виде двоичного файла с использованием Delphi 2007 , но есть ли другоепуть?

1 Ответ

8 голосов
/ 31 октября 2011

Это должно сделать это:

procedure DecodeBaseToFile(const FileName: string; 
  const EncodedString: AnsiString);
var
  bytes: TBytes;
  Stream: TFileStream;
begin
  bytes := DecodeBase64(EncodedString);
  Stream := TFileStream.Create(FileName, fmCreate);
  try
    if bytes<>nil then
      Stream.WriteBuffer(bytes[0], Length(bytes));
  finally
    Stream.Free;
  end;
end;

Примечание : Я только скомпилировал это в своей голове.

...