Delphi 10.2 사용 TClientDataSet을 마우스 오른쪽 버튼으로 클릭하고 'MyBase Xml UTF-8 테이블에 저장'을 선택하십시오. 내가 바이너리 비트 맵의 Base64로 문자열 표현으로 믿는 것을 변환하려고 해요MyBase XML 파일의 TPicture
<FIELD attrname="BMP" fieldtype="bin.hex" SUBTYPE="TypedBinary" WIDTH="1"/>
:로
<ROW NAME="Angel Fish" SIZE="2" WEIGHT="2" AREA="Computer Aquariums" BMP="AQAAAfY+AABCTfY+AAAAAAAAdgAAACgAAADIAAAAoAAAAAEA ...
BMP 필드가 정의 : 지금이 형식의 XML 파일이 파일을 그림에 삽입하십시오. 지금까지 나는이있어 : $ 74DCCBB2에서
첫 번째 예외 :
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;
그러나 TPicture.LoadFromStream이 예외가 발생합니다. 예외 클래스 EInvalidGraphic에 '지원되지 않는 스트림 형식'메시지가 있습니다.
아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까? 많은 감사합니다.
왜 당신은 원시 XML을 읽고되지 않습니다 단지있는 TClientDataset에 다시로드하고 TField 객체를 통해 접근? –
이 XML 파일을 C#에서 재사용하고 싶습니다. 이미지를 제외 할 수 있습니다. C#에서 이미지를 가져올 수 없었기 때문에 문제를 해결하기 위해 델파이로 돌아갈 것이라고 생각했습니다. –