Einzelnen Beitrag anzeigen

creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
241 Beiträge
 
Delphi 10.4 Sydney
 
#1

Gespeicherter String anders als String aus dem Speicher?

  Alt 14. Nov 2018, 10:54
Zur speicherung in eine XML als base64binary übertrage eine JPG Grafik in einen String.

Code:
function JPEGToBase64String(FileName: String): String;
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create(FileName, fmOpenRead);
  Result := TIdEncoderMIME.EncodeStream(Stream);
  Stream.Free;
end;
Den erzeugten String speichere ich über eine Stringlist als TXT ab. Diese TXT lade ich mit folgenden Code wieder um den String zu decodieren und anzuzeigen:

Code:
procedure TForm1.Button2Click(Sender: TObject);
var
  Str: String;
  Strem: TMemoryStream;
  JPG: TJPEGImage;
begin
  Str := Path + 'Test.txt'; // die Datei mit dem String
  Stream := TMemoryStream.Create;
  try
    TIdDecoderMIME.DecodeStream(Str, Stream);
    Stream.Position := 0;
    JPG := TJPEGImage.Create;
     try
      JPG.LoadFromStream(Stream);
      Image1.Picture.Assign(JPG);
     finally
      JPG.Free;
     end;
  finally
   Stream.Free;
  end;
end;
Ergebnis: JPEG Fehler #53, soll heißen kein korrektes JPG, also keine Anzeige

WENN ich aber den String global als Variable verwende, also NICHT als String speichere und an die Decodierung gebe geht das alles anstandlos.

Fazit : Beim speichern des Strings passiert irgendwas damit was letztlich zum Fehler führt. Oder? Und wenn ja was?


creehawk
  Mit Zitat antworten Zitat