function GetOrCreastObject 报错,求解

M仔1999 2017-06-23 10:56:25
如题,function GetOrCreastObject 报错,求解
这是用于delphi 开发Solidworks的测试程序的
错误如图:

代码如下:
[code=delphi][unit YSZfprm;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls,ComObj,Activex;

type
TForm1 = class(TForm)
cmBtJr:TButton;
cmBtTc:TButton;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
cmBtCP:TButton;
cmBtSc: TButton;
edWz:Tedit;
SaveDialog1: TSaveDialog;
StatusBar1: TStatusBar;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
//function GetOrCreastObject(const ClassName:String):IDispatch;//定义函数GetOrCreateObjec,字符型的参数CLassName,用于来传递ProgID.返回一个所选择原COM对象
//根据SW的运行情况创建或获取SldWorks对象 //对函数的说明

public
{ Public declarations }
swApp,Part:variant; //定义OLE对象变量,分别对应SldWorks和PartDoc对象
DocName:string; //DocName用于存放要保存文档的名称
function GetOrCreastObject(const ClassName:String):IDispatch;//定义函数GetOrCreateObjec,字符型的参数CLassName,用于来传递ProgID.返回一个所选择原COM对象
//根据SW的运行情况创建或获取SldWorks对象 //对函数的说明
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
function TForm1.GetOrCreastObject(const ClassName: String): IDispatch;
var //变量说明
ClassID:TGUID; //定义变量ClassID为TGUID类型,GUID是一个128位的数字,它是"全局惟一标识"
Unknown:IUnknown; //定义变量Unknown为IUnknown类型,IUnknown是一个基类,所有的COM类必须从这个基类导出.任何没有实现IUnknown接口的接口都必须不是一个真正的COM接口
Begin //Begin于第12行END之间的部分为程序的执行部分,它由一系的语句组成,每一条语句执行一定的动作,完成一定的任务。两语句之件用分号(;)隔开。
ClassID:=ProgIDToClassID(ClassName); //调用ProgIDToClassID 返回GUID
if Succeeded(GetActiveObject(ClassID,nil,Unknown))then //判定系统是否已导弹驱逐舰激活了SldWorks对象
OleCheck(Unknown.queryInterface(IDispatch,Result)) //已激活,调用OleCheck过程
else
Result:=CreateOleObject(ClassName); //创建SldWorks对象
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if SaveDialog1.Execute Then //用Execute方法打开保存对话框
Begin
DocName:=SaveDialog1.FileName; //获得文件名
Part.SaveAs(DocName); //完成存盘
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
swApp:=GetOrCreateObject('SldWorks.Application'); // 运用函数GetOrCreateObject创建或获取SldWorks对象
swApp.visible:=True; //使创建的SldWorks对象可见
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
swApp.CloseDoc(DocName); //关闭当前文档
swApp.ExitApp; //退出SW
Close; //关闭对话框
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Part:=swApp.NewPart; //建立新的文档
Part.InsertSketchText(0,0,0,edWz.Text,0,0,0,100,100); //利用PartDoc对象的InsertSketchText方法创建文字
Part.FeatureManager.FeatureExtrusion(True,False,False,0,0,0.01,0.01,False,False,False,False,0,0,False,False,False,False,False,False,True); //利用FeatureExtrusion方法以该文字为基础创建拉伸基体\凸台特征
Part.EditReBuild; //重建模
Part.ViewZoomtofit2 //全屏显示
end;

end.]
...全文
628 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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