关于通过OleContainer1组件往数据库存储文件的问题!
procedure TForm1.AddTButtonClick(Sender: TObject);
var
ST:TStream;
fn: string;
Date:TDateTime;
ID: Longint;
Node:TTreeNode;
begin
Date:=now;
ID:=StrToInt(format('%10.0f',[50000*Date]));
if OpenDialog1.Execute then
begin //打开文件
fn := ExtractFileName(OpenDialog1.FileName);
with IBTable1 do
begin
Open;
if State <>dsEdit then Edit;
Append;
FieldByName('Code').AsInteger:=ID;
FieldByName('FType').AsString:=TreeView1.Selected.Text;
FieldByName('FName').AsString:=fn;
ST:=CreateBlobStream(FieldByName('Detail'),bmWrite);
OleContainer1.CreateObjectFromFile(OpenDialog1.FileName, False); //创建OLE对象
OleContainer1.SaveToStream(ST); //将OLE数据存入数据库
ST.Free;
Post;
end;
Node:=TreeView1.Items.AddChild(TreeView1.Selected,fn);
Node.ImageIndex:=6;
Node.SelectedIndex:=6;
end;
AddTButton.Enabled:=false;
end;
有些错误可以说莫名其妙。比如:以上程序存储doc、txt、bmp文件都很顺利,可是存储mp3文件时却“应用程序已启动,但未注册类别工厂。”然后高亮指向“ OleContainer1.SaveToStream(ST); //将OLE数据存入数据库
这一句。
期待解答。
[解决办法]
是不是控件有问题呀