Hallo
Ich habe ein kleines Tool neu compiliert (bisher XE 6, jetzt 10.3.2).
Bisher halle ich folgenden Code:
Delphi-Quellcode:
procedure TfrmMain.ReadXMLData;
Var
ABlobStream: TMemoryStream;
AStream: TMemoryStream;
Q: TMSQuery;
ABlobField: TField;
P: Integer;
begin
Q := DMMain.qryXML;
if Q.IsEmpty then
Exit;
ABlobField := Q.FindField('XML_AUSKUNFT');
assert(ABlobField <> nil);
if ABlobField.IsNull then
Exit;
ABlobStream := TMemoryStream.Create;
AStream := TMemoryStream.Create;
try
ABlobStream := TMemoryStream(Q.CreateBlobStream(Q.FieldByName('XML_AUSKUNFT'), bmRead));
{$IFDEF DEBUG}
ABlobStream.Position := 0;
ABlobStream.SaveToFile('d:\auskunft.xml');
{$ENDIF}
if ABlobStream.Size > 0 then
begin
p := GetStreamPos(ABlobStream, '>');
AStream.WriteBuffer(SXMLHeader[1], Length(SXMLHeader));
ABlobStream.Position := P;
AStream.CopyFrom(ABlobStream, ABlobStream.Size - P);
end;
AStream.Position := 0;
CR5XML.AssignFromStream(AStream);
finally
ABlobStream.Free;
AStream.Free;
end;
end;
In der mit XE 6 compilierten Version war der Inhalt in ABlobStream (
XML) als Ansistring verfügbar.
Mit Rio liefert das nun
UniCode.
Wie kann ich den Feldinhalt wieder als Ansistring bekommen?
Das Feld kommt aus den Devart SDAC Komponenten.
Frank