当前位置:主页>仓库管理软件> 列表

跪求大家的帮助啊!关于读取数据库流文件的! 找商品销售管理软件

财务软件版1楼: 我用ado控件读取sqlserver的一个blog字段(在access是ole的类型)内容是大量的文字,目的是想把这些文字显示出来,我用选是RichEdit1控件显示。
我试了好多方法都不行,在这方面自己是超级菜鸟
我搜索资料写的代码是
procedure TForm1.BitBtn1Click(Sender: TObject);
var
blob: TBlobStream; //文件流

begin
adoquery1.open;
blob:=tblobstream.Create(tblobfield(adoquery1.fields[1]),bmRead);
blob.Seek(0, soFromBeginning);
RichEdit1.text.LoadFromStream(blob);
blob.Free ;
end;
但是在RichEdit1.text.LoadFromStream(blob)行报错。不成功。
急死我了!请大家帮忙啊!

2楼: 使用filestream看看 如商品销售管理软件

3楼: procedure TForm1.btnLoadFromBlobFieldClick(Sender: TObject);
var
aBlobField: TBlobField;
aMS: TMemoryStream;
begin
ADOQuery1.Open;
ADOQuery1.First;

if ADOQuery1.FieldByName(''F_Blob'') is TBlobField then
aBlobField := ADOQuery1.FieldByName(''F_Blob'') as TBlobField
else
Exit;

aMS := TMemoryStream.Create;
try
aBlobField.SaveToStream(aMS);
aMS.Position := 0;
RichEdit1.lines.LoadFromStream(aMs);
finally
aMS.Free;
end;
end;

4楼: orangutang :根据你的代码我取出来的只是文件的第一个字母啊?是什么原因呢?

5楼: 你的文件一定是UniCode编码,delphi中的TStrings不能处理UniCode编码。我的代码例子在处理纯文本的文件中通过测试的。

6楼: orangutang :能有什么好的方法可以处理一下吗?可以提供建议吗?谢谢了。真的是很着急。

财务软件版7楼: 既然如此,首先确定一下你的blob字段中到底存放的是什么东西,可不可以用文本工具编辑。

参考下面代码:
aMS := TMemoryStream.Create;
try
aBlobField.SaveToStream(aMS);
aMS.Position := 0;
aMS.SaveToFile(''MyData.txt''); //无论Blob字段中保存的是什么东西,都可以做成数据文件

//暂时不用文本编辑
//RichEdit1.lines.LoadFromStream(aMs);
finally
aMS.Free;
end;
上面代码会在你的目录中生成一个数据文件:MyData.txt,然后你试图用记事本打开该文件。如果能正常打开,你再用16进制编辑器如:Winhex或UltraEdit察看该文件的前2个字节是否是$FF $FE,如果是这2个字节,则可以肯定,你要编辑的文本是Unicode编码的文本。

8楼: orangutang ,谢谢你热心的帮助!

9楼: 多人接受答案了。