读取二进制字段值

lgg666 2013-05-31 02:11:24
之前没用过delphi开发
现在碰到个问题
s_sql:='SELECT * FROM table ';
ADOl.Close();
ADOl.SQL.Clear();
ADOl.SQL.Add(s_sql);
ADOl.Open;
表有一个字段1,字段1类型为image,试问ADOdzbl.FieldByName('字段1).Value为什么取不出值。
...全文
79 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiba7288 2013-05-31
  • 打赏
  • 举报
回复
引用 7 楼 lgg666 的回复:
这个保存成TMemoryStream类型,传给另外一个函数参数类型是OleVariant,类型不匹配,就纠结到这了,
试下上面的函数:StreamToVariant
lgg666 2013-05-31
  • 打赏
  • 举报
回复
这个保存成TMemoryStream类型,传给另外一个函数参数类型是OleVariant,类型不匹配,就纠结到这了,
feiba7288 2013-05-31
  • 打赏
  • 举报
回复
Sream转OleVariant是试下下面的函数: 引用自:http://blog.csdn.net/xt_chaoji/article/details/6891360

function TForm1.StreamToVariant(Stream: TStream): OleVariant;
var
p: Pointer;
begin
  Result := VarArrayCreate([0, Stream.Size - 1], varByte);
  p := VarArrayLock(Result);
  try
    Stream.Position := 0;
    Stream.Read(p^, Stream.Size);
  finally
    VarArrayUnlock(Result);
  end;
end;
feiba7288 2013-05-31
  • 打赏
  • 举报
回复

var
  ms: TMemoryStream;
begin
  TBlobField(ADOdzbl.FieldbyName('字段1')).SaveToStream(ms);
end;
lgg666 2013-05-31
  • 打赏
  • 举报
回复
这样我知道 跟 ms:=TMemoryStream(ADOdzbl.CreateBlobStream(ADOdzbl.FieldByName('病历内容'),bmRead)); ms.SaveToFile('c:\ddd1.xml'); 差不多,把二进制流保存成文件了,我现在是要用这个二进制流,把取出来的二进制流赋值给一个变量,传给另外一个函数,保存成文件就复杂了。这个二进制流怎么赋值给变量,再以参数形式传给别的函数(参数类型为OleVariant)
feiba7288 2013-05-31
  • 打赏
  • 举报
回复
TBlobField(ADOdzbl.Fieldbyname('字段1')).SaveToFile(ExtractFilePath(Application.ExeName)+'a.jpeg');
lgg666 2013-05-31
  • 打赏
  • 举报
回复
具体怎么写,详细说一下吧 小弟菜鸟,实在不会
xhz8000 2013-05-31
  • 打赏
  • 举报
回复
这个这个使用blob流取出!

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧