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