L
leyon328
Unregistered / Unconfirmed
GUEST, unregistred user!
数据库表中有BLOB字段,保存一个不定长的smallint数组,已经有好多记录了,现在要
从表中取出此字段的值,并一一显示数组中的值。
procedure TForm1.DBGrid1DblClick(Sender: TObject);
Var
tmpStream : TMemoryStream;
tmpField : TBlobField;
dst_f_hdl : Integer;
kk,len : smallint;
buf : psmallint;
begin
len := ADOQuery1.FieldByName('len').asinteger;
tmpStream := TMemoryStream.Create;
tmpStream.Position := 0;
tmpField := (TBlobField(ADOQuery1.FieldByName('myblob')));
tmpField.SaveToStream(tmpStream);
getmem(buf,len*sizeof(smallint));
tmpStream.Position := 0;
len := tmpStream.Read(buf,len*sizeof(smallint));
tmpStream.Free;
// kk := smallint(buf^);//此处如何一一取出数组中的值。
freemem(buf);
//临时看看保存为文件咋样,结果是对的。
dst_f_hdl := FileCreate('1.p');
FileSeek(dst_f_hdl,0,0);
FileWrite(dst_f_hdl,buf,len*sizeof(smallint));
FileClose(dst_f_hdl);
end;
从表中取出此字段的值,并一一显示数组中的值。
procedure TForm1.DBGrid1DblClick(Sender: TObject);
Var
tmpStream : TMemoryStream;
tmpField : TBlobField;
dst_f_hdl : Integer;
kk,len : smallint;
buf : psmallint;
begin
len := ADOQuery1.FieldByName('len').asinteger;
tmpStream := TMemoryStream.Create;
tmpStream.Position := 0;
tmpField := (TBlobField(ADOQuery1.FieldByName('myblob')));
tmpField.SaveToStream(tmpStream);
getmem(buf,len*sizeof(smallint));
tmpStream.Position := 0;
len := tmpStream.Read(buf,len*sizeof(smallint));
tmpStream.Free;
// kk := smallint(buf^);//此处如何一一取出数组中的值。
freemem(buf);
//临时看看保存为文件咋样,结果是对的。
dst_f_hdl := FileCreate('1.p');
FileSeek(dst_f_hdl,0,0);
FileWrite(dst_f_hdl,buf,len*sizeof(smallint));
FileClose(dst_f_hdl);
end;