读取aacess的ole型的字段(二进制unicode编码的字符串),显示汉字字符串时有些问题!以下我的代码,恳请大家帮忙解答!(50分)

  • 主题发起人 zh_haoer
  • 开始时间
Z

zh_haoer

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm11.DBGridEh1CellClick(Column: TColumnEh);
var
aBlobField: TBlobField;
aMS: TMemoryStream;
strText,strFileName: widestring;
f : TFileStream;
begin
ADOQuery1.Close;
ADOQuery1.sql.Clear;
Adoquery1.SQL.Text:= 'select 电报数据 from telegraphdata where 电报代码 ='''+ trim(DBGrideh1.fields[12].asstring) + '''';
ADOQuery1.Open;

if ADOQuery1.FieldByName('电报数据') is TBlobField then
aBlobField := ADOQuery1.FieldByName('电报数据') as TBlobField
else
Exit;

aMS := TMemoryStream.Create;
try
aBlobField.SaveToStream(aMS);
aMS.Position := 0;
aMS.SaveToFile('d:/MyData.txt'); //无论Blob字段中保存的是什么东西,都可以做成数据文件
strFileName:= 'd:/MyData.txt'; // 读取的文件名
f:= TFileStream.Create(strFileName,fmOpenRead); // 独占、只读打开这个文件
try
SetLength(strText, f.Size);
f.ReadBuffer(strText[1], f.Size);
Memo1.lines.Text:=strtext;
finally
f.Free;
end;

finally
aMS.Free;
end;
end;
显示出现的问题:1、结尾有时有乱码(nnnn为结束标识了 TB 10.19 19
NNNNt OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=Fa) 2、结尾有时出现大量的问号字符(TB 15.19 19
NNNN????????????????????????????????) 3、有时内容显示 的不全
4、考虑是不是因为自己没做判断的原因,这方面知识欠缺,恳请大家帮忙!
 
如果只是结尾有乱码的话可能字段长度不够,存入数据的汉字被截断了。
 
顶部