Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Gespeicherter String anders als String aus dem Speicher? (https://www.delphipraxis.net/198564-gespeicherter-string-anders-als-string-aus-dem-speicher.html)

creehawk 14. Nov 2018 09:54

Gespeicherter String anders als String aus dem Speicher?
 
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

TiGü 14. Nov 2018 10:13

AW: Gespeicherter String anders als String aus dem Speicher?
 
Du rufst DecodeStream mit den Inhalt von
Delphi-Quellcode:
Path + 'Test.txt'
, also dem Dateipfad, auf.
Du willst doch sicherlich den DateiINHALT als String auslesen und übergeben, gell?
Nimm noch nen Kaffee! :cheers:

creehawk 14. Nov 2018 14:11

AW: Gespeicherter String anders als String aus dem Speicher?
 
Gut.

Okay.

Schon verstanden.

Ich hasse Kaffee. Ich hol' mir einen schönen Tee. Schwarz. Mit Schuss.

Programmieren lasse ich in Zukunft sein. Häkeln ist einfacher.

Ich danke untertänigst für den Hinweis. Sackerlzement.

creehawk


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz