最近想用cb編程opc客戶端,網上查到了《delphi 用Automation介面撰寫OPC客戶端》也按照文章中的方法匯入了型別庫OPC DA Automation Wrapper,然后定義變數如下:
Variant FOPCServer;
FOPCServer = new TOPCServer(Application);
正常下面應該是對FOPCServer新的變數進行操作,如FOPCServer.Connect();(考慮可以連接)
但編譯的時候提示錯誤[BCC32 Error] Unit7.cpp(28): E2316 'Connect' is not a member of 'Variant',但是FOPCServer現在應該是TOPCServer這個型別啊,這個型別是有Connect()這個函式的啊!
請教各位大俠了!
附上delphi文章中的一段
宣告 OPC 的類與介面
FOPCServer:TOPCServer;
FOPCGroup :TOPCGroup;
FOPCb :OPCBrowser;
FOPCItems :OPCItems; // interface
FOPCItem :OPCItem; // interface
// 獲取OPC Server 串列
function TForm1.OPCServerList(): Boolean;
var OPCServerList,OPCServerName:OleVariant;
j,i:integer;
begin
Result := false;
try
FOPCServer := TOPCServer.Create(Self);
OPCServerList:=FOPCServer.GetOPCServers;相當于紅色的這段話編譯出錯了
uj5u.com熱心網友回復:
擼過圍觀,不懂opc。 good good study, day day up
uj5u.com熱心網友回復:
你用delphi還c++buildercb的話,
FOPCServer = new TOPCServer();
OPCServerList =FOPCServer->GetOPCServers;
你看看TOPCServer的類定義,在某個hpp檔案里,看有沒有GetOPCServers方法,如果沒有那肯定呼叫不成功.
GetOPCServers是不是在另外一個類里,你搜索一下匯入生成的hpp檔案
uj5u.com熱心網友回復:
網上這類程式有很多,樓主可以搜搜參考下uj5u.com熱心網友回復:
C++Builder中的OLE要比Delphi中麻煩一些。OPCServerList:=FOPCServer.GetOPCServers;
翻譯成:
OPCServerList = FOPCServer.OleFunction("GetOPCServers");FOPCServer.Connect();
也得寫成:
FOPCServer.OleFunction("Connect");
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/148750.html
上一篇:Java集合框架-概述
