Verwenden von Delphi 10.2 Ich Rechtsklick auf ein TClientDataSet und wählen Sie "In MyBase Xml UTF-8 Tabelle speichern." Ich habe jetzt eine XML-Datei mit folgendem Format:TPicture von MyBase Xml-Datei
<ROW NAME="Angel Fish" SIZE="2" WEIGHT="2" AREA="Computer Aquariums" BMP="AQAAAfY+AABCTfY+AAAAAAAAdgAAACgAAADIAAAAoAAAAAEA ...
Das BMP-Feld definiert ist als:
<FIELD attrname="BMP" fieldtype="bin.hex" SUBTYPE="TypedBinary" WIDTH="1"/>
Ich versuche zu konvertieren, was ich glaube, eine Base64 String-Darstellung eines binären Bitmap sein file in ein Bild. Bisher habe ich diese bekam:
uses
XMLDoc, Vcl.ComCtrls, XMLIntf, IdCoder, IdCoderMIME, IdGlobal,
Vcl.ExtCtrls;
procedure TForm2.Button1Click(Sender: TObject);
var Doc:TXMLDocument;
First:IXMLNode;
Str:String;
Bytes: TIdBytes;
Pic:TPicture;
Stream:TMemoryStream;
Writer: TBinaryWriter;
begin
Doc:=TXMLDocument.Create(Self);
Doc.FileName:='D:\temp\ClientDataSet2.xml';
Doc.Active:=true;
First:=Doc.DocumentElement.ChildNodes['ROWDATA'].ChildNodes.First;
Str:=First.Attributes['BMP'];
Bytes:=TIdDecoderMIME.DecodeBytes(Str);
Stream:=TMemoryStream.Create;
Writer:=TBinaryWriter.Create(Stream);
Writer.Write(TBytes(Bytes));
Stream.Position:=0;
Pic:=TPicture.Create;
Pic.LoadFromStream(Stream);
Image1.Picture:=Pic;
RichEdit1.Text:=Str;
end;
Allerdings wirft TPicture.LoadFromStream diese Ausnahme:
erste Chance bei $ 74DCCBB2. Ausnahmeklasse EInvalidGraphic mit Meldung 'Nicht unterstütztes Stream-Format'.
Könnte mir bitte jemand sagen, was ich falsch mache? Danke vielmals.
Warum liest du den rohen XML und nicht einfach wieder in eine TClientDataset einlegen und es durch die TField zugreifen? –
Da ich diese XML-Datei in C# wiederverwenden möchte, kann ich das abzüglich des Bildes tun. Da ich das Bild nicht in C# importieren konnte, dachte ich, ich würde zu Delphi zurückkehren, um die Probleme zu lösen. –