如題,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.]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/53676.html
上一篇:求助撰寫DLL出錯
