Delphi7中。读取包含WideString数据的BLOB字段

时间:2013-08-09 08:29:17

标签: database unicode delphi-7

有人可以帮忙吗?我正在保留一个旧的Delphi7项目,并有下一个麻烦。如果包含Unicode字符串,我如何存储BLOB字段值? 我试过了:

var
  str: WideString;
begin
  ...
  str := WideString(Fields[1].AsString); - but I get empty string
  ...

  ...
  str := VarToWideStr(Fields[1].AsVariant); - but I get "(BLOB)" result in str varible.
  ...
end;

我的解决方案: 代码用法:

...
stream := TMemoryStream.Create;
try
  Fields[1].SaveToStream(stream);
  ss := MemStreamToWStr(stream);
finally
  stream.Destroy;
end;
...

功能:

function TSnsFrame.MemStreamToWStr(Mstream: TMemoryStream): WideString;
begin
  Mstream.Seek(0, soFromBeginning);
  SetLength(Result, Mstream.size div 2);
  MStream.ReadBuffer(Result[1], Mstream.size);
end;

1 个答案:

答案 0 :(得分:0)

看看TDataSet.CreateBlobStream()。它返回一个TStream,可用于读取/写入blob字段的原始数据。