Einzelnen Beitrag anzeigen

Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#1

Inhalt Blobfield als Ansistring

  Alt 11. Dez 2019, 07:29
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
Frank Reim
  Mit Zitat antworten Zitat