> 本人のレスがあって,Delphi XE7 だと OK で,Delphi 6 だとエラー発生
> のようです.SaveToStream なのかな ?
> 調べてみないと分かりませんね.
以下のコードでやってみました.Window 7 U64(SP1) + Delphi6 Pro(UP2) です.
ただし,JPGE 画像ファイルでのテストです.
画像ファイルを変えて実行してみましたが,エラーは発生しませんでした.
データを読み出して表示するのも行っています.
以下はサンプルに掲載しているコードではなく,
質問されたコードをコピペして,画像の部分だけ変えています.
もちろん,データベースは違いますが...
procedure TForm1.Button1Click(Sender: TObject);
var
StrText : String;
FileStream : TFileStream;
BlobStream : TStream;
begin
ADOConnection1.Connected := False;
ADOConnection1.LoginPrompt := False;
StrText := 'Provider=Microsoft.Jet.OLEDB.4.0';
StrText := StrText + ';Data Source=' + '../BlobTest_BLOB.mdb';
ADOConnection1.ConnectionString := StrText;
ADOConnection1.Mode := cmReadWrite;
ADODataSet1.Connection := ADOConnection1;
ADODataSet1.CommandText := 'SELECT * FROM TEST where ID=100 ';
ADODataSet1.Active := True;
ADODataSet1.Edit;
//---------------------------------------------------------------------------
// 上はデータベースへの接続用コード
// 以下が実際の書き込みコード
//---------------------------------------------------------------------------
try
BlobStream := ADODataSet1.CreateBlobStream(ADODataSet1.FieldByName('Graphic'), bmWrite);
FileStream := TFileStream.Create(ExpandFileName('../501.jpg'), fmOpenRead or fmShareDenyNone);
BlobStream.CopyFrom(FileStream, FileStream.Size);
FileStream.Free;
BlobStream.Free;
ADODataSet1.Post;
except
ADODataSet1.Cancel;
end;
ADODataSet1.Active := false;
end;
|