各位高手请帮我看一下以下代码,将一个数组保存到数据库后再读出来,
不知道为什么其结果与存入的不相符,麻烦大家诊断一下,谢谢!//将0~255的数据填充到Byte类型的数组后保存到Image类型的字段
procedure TForm1.btn1Click(Sender: TObject);
var
  i: Integer;
  arr: array[0..255] of Byte;
  BStream: TStream;
begin
  for i:=0 to 255 do
  begin
    arr[i] := i;
  end;  qry1.Active := True;
  qry1.Edit;
  BStream := qry1.CreateBlobStream(qry1.FieldByName('Finger'), bmWrite);
  BStream.WriteBuffer(arr, SizeOf(arr));
  BStream.Position := 0;
  BStream.Free;
  qry1.Post;
end;//读出之前存在数据库的数据至数组
procedure TForm1.btn2Click(Sender: TObject);
var
  arr: array[0..255] of Byte;
  BStream: TStream;
begin
  qry1.Active := True;
  BStream := qry1.CreateBlobStream(qry1.FieldByName('Finger'), bmRead);
  BStream.Position := 0;
  BStream.WriteBuffer(arr, SizeOf(arr));  //数组arr中数据不是上面写入的  BStream.Free;
end;

解决方案 »

  1.   

    procedure TForm1.btn2Click(Sender: TObject); 
    var 
      arr: array[0..255] of Byte; 
      BStream: TStream; 
    begin 
      qry1.Active := True; 
      BStream := qry1.CreateBlobStream(qry1.FieldByName( 'Finger '), bmRead); 
      BStream.Position := 0; 
      BStream.ReadBuffer(arr, SizeOf(arr));  //数组arr中数据不是上面写入的   BStream.Free; 
    end;
      

  2.   

    >>BStream.WriteBuffer(arr, SizeOf(arr));  //数组arr中数据不是上面写入的将stream的内容向数组里写应该是
    BStream.ReadBuffer(arr, SizeOf(arr));