大侠们帮看看,access中blob字段为unicode文本用TMemoryStream读出处理后为什么乱码?(200分)

  • 主题发起人 主题发起人 snfa
  • 开始时间 开始时间
S

snfa

Unregistered / Unconfirmed
GUEST, unregistred user!
同样这段代码读unicode文本文件就可以,大家帮看看
var
pBuffer: PByte;
ff,pwChr: pWideChar;
strmScript: TMemoryStream;
sScript: string;
i:integer;
begin
strmScript:=TMemoryStream.Create;
TBlobField(adoQuery1.FieldByName('blob')).SaveToStream(strmScript);
GetMem(pBuffer, strmScript.Size);
try
strmScript.Read(pBuffer^, strmScript.Size);
pwChr:=pWideChar(pBuffer);
//Inc(pwChr,2);
sScript :=WideCharToString(pwChr);
SetLength(sScript,strmScript.Size div 2);//必须限制大小否则有乱码
ShowMessage(IntToStr(strmScript.Size));
Memo1.Text :=sScript;
RichEdit1.Lines.Text:=sScript;
finally
FreeMem(pBuffer);
strmScript.Free;
end;
 
各位帮帮忙
 
你是怎么保存的到access数据库的?
我测试你的代码,发现写入数据库的内容就存在问题了。
 
我是用一个现成的数据库,现在只考虑读出数据,本代码是为了在ACCESS中读出blob字段
blob中内容为UNIcode格式文本,格式为31 00 21 00 36 00 。。。。。。。。。。 如果把文本用TBlobField(adoQuery1.FieldByName('blob')).SaveToStream(sMemoryStream);读出在写成文本以后,再用TMemoryStream;读出处理就没问题。为什么?
 
后退
顶部