亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iopcserverimpl.pas

?? About delphi opc server a good file...
?? PAS
字號:
{$IFDEF VER150}
{$WARN UNSAFE_CAST OFF}
{$WARN UNSAFE_CODE OFF}
{$ENDIF}

function TDA2.AddGroup(szName:POleStr;bActive:BOOL; dwRequestedUpdateRate:DWORD;
                  hClientGroup:OPCHANDLE; pTimeBias:PLongint; pPercentDeadband:PSingle;
                  dwLCID:DWORD; out phServerGroup: OPCHANDLE;
                                out pRevisedUpdateRate:DWORD;
                                const riid: TIID;
                                out ppUnk:IUnknown):HResult;stdcall;
var
 s1:string;
 i:longint;
 aGrp:TOPCGroup;
 perDeadband:single;
begin
 result:=S_OK;
 s1:=szName;
 i:=0;

 if (s1 = '') then
  repeat
   s1:=s1 + IntToStr(GetTickCount);
   i:=succ(i);
  until (not IsNameUsedInAnyGroup(s1)) or (i > 9);

 if i > 9 then
  begin
   result:=OPC_E_DUPLICATENAME;
   phServerGroup:=0;
   Exit;
  end;

 if IsNameUsedInAnyGroup(s1) then
  begin
   result:=OPC_E_DUPLICATENAME;
   phServerGroup:=0;
   Exit;
  end;

 aGrp:=TOPCGroup.Create(self,grps);
 if aGrp = nil then
  begin
   result:=E_OUTOFMEMORY;
   phServerGroup:=0;
   Exit;
  end;

 grps.Add(aGrp);
 phServerGroup:=GetNewGroupNumber;
 if assigned(pPercentDeadband) then
  perDeadband:=pPercentDeadband^
 else
  perDeadband:=0;

 aGrp.SetUp(s1,bActive,dwRequestedUpdateRate,hClientGroup,0,
            perDeadband,dwLCID,phServerGroup);

 aGrp.ValidateTimeBias(pTimeBias);

 if dwRequestedUpdateRate <> aGrp.requestedUpdateRate then
  result:=OPC_S_UNSUPPORTEDRATE;

 pRevisedUpdateRate:=aGrp.requestedUpdateRate;

 Form1.UpdateGroupCount;
 ppUnk:=aGrp;
end;

function TDA2.GetErrorString(dwError:HResult; dwLocale:TLCID; out ppString:POleStr):HResult; stdcall;
begin
 ppString:=StringToLPOLESTR(OPCErrorCodeToString(dwError));
 result:=S_OK;
end;

function TDA2.GetGroupByName(szName:POleStr; const riid:TIID; out ppUnk:IUnknown):HResult; stdcall;
var
 i,gNum:integer;
begin
 gNum:=IsGroupNamePresent(grps,szName);     //returns the index to the groups list
 if (addr(ppUnk) = nil) or (gNum = -1)then
  begin
   Result:=E_INVALIDARG;              Exit;
  end;
 i:=gNum;
// i:=FindIndexViaGrpNumber(grps,gNum);
 if (i = -1) or (i > (grps.count-1) )  then
  begin
   Result:=E_FAIL;              Exit;
  end;
 result:=IUnknown(TOPCGroup(grps[i])).QueryInterface(riid,ppUnk);
end;

function TDA2.GetStatus(out ppServerStatus:POPCSERVERSTATUS):HResult;stdcall;
var
 aFileTime:TFileTime;
begin
 if (addr(ppServerStatus) = nil) then
  begin
   Result:=E_INVALIDARG;              Exit;
  end;
 result:=S_OK;
 ppServerStatus:=POPCSERVERSTATUS(CoTaskMemAlloc(sizeof(OPCSERVERSTATUS)));
 if ppServerStatus = nil then
  begin
   ppServerStatus:=nil;         result:=E_OUTOFMEMORY;   Exit;
  end;

 DataTimeToOPCTime(srvStarted,aFileTime);
 CoFiletimeNow(ppServerStatus.ftCurrentTime);
 DataTimeToOPCTime(lastClientUpdate,ppServerStatus.ftLastUpdateTime);

 ppServerStatus.dwServerState:=OPC_STATUS_RUNNING;
 ppServerStatus.dwGroupCount:=GetGroupCount(grps) + GetGroupCount(pubGrps);
 ppServerStatus.dwBandWidth:=100;
 ppServerStatus.wMajorVersion:=1;
 ppServerStatus.wMinorVersion:=2;
 ppServerStatus.wBuildNumber:=5;
 ppServerStatus.szVendorInfo:=StringToLPOLESTR('MRD');
end;

function TDA2.RemoveGroup(hServerGroup:OPCHANDLE; bForce:BOOL):HResult;stdcall;
var
 i:integer;
 aGrp:TOPCGroup;
begin
 result:=S_OK;
 if hServerGroup < 1 then
  begin
   result:=E_INVALIDARG;
   Exit;
  end;

 i:=FindIndexViaGrpNumber(grps,hServerGroup);
 if i = -1 then            //the client as already freed the group
  Exit;                    //and we deleted it from the server list in the group destroy

 aGrp:=grps[i];
 if (aGrp.RefCount > 2) and not bForce then
  begin
   result:=OPC_S_INUSE;
   Exit;
  end;

 GroupRemovingSelf(grps,hServerGroup);
end;

function TDA2.CreateGroupEnumerator(dwScope:OPCENUMSCOPE; const riid:TIID;
                                         out ppUnk:IUnknown):HResult; stdcall;

 procedure EnumerateForStrings;
 var
  i:integer;
  pvList,pubList:TStringList;
 begin
  pvList:=nil;               pubList:=nil;
  try
   case dwScope of
    OPC_ENUM_PRIVATE_CONNECTIONS,OPC_ENUM_PRIVATE:
     pvList:=CreateGrpNameList(grps);
    OPC_ENUM_PUBLIC_CONNECTIONS,OPC_ENUM_PUBLIC:
     pubList:=CreateGrpNameList(pubGrps);
    OPC_ENUM_ALL_CONNECTIONS,OPC_ENUM_ALL:
     begin
      pvList:=CreateGrpNameList(grps);
      pubList:=CreateGrpNameList(pubGrps);
     end
    else
     begin
      result:=E_INVALIDARG;
      Exit;
     end;
   end;

   if pvList = nil then
    pvList:=TStringList.Create;
   if pubList <> nil then
    if pubList.count > 0 then
     for i:= 0 to pubList.count-1 do
      pvList.Add(pubList[i]);

   result:=S_OK;
   ppUnk:=TOPCStringsEnumerator.Create(pvList);
  finally
   pvList.Free;
   pubList.Free;
  end;
 end;


 procedure EumerateForUnknown;
 var
  aList:TList;

 procedure AddAGroup(inList:TList);
 var
  i:integer;
  Obj:Pointer;
 begin
  for i:= 0 to inList.count -1 do
   begin
    Obj:=nil;
    IUnknown(TOPCGroup(inList[i])).QueryInterface(IUnknown,Obj);
    if Assigned(Obj) then
     aList.Add(Obj);
   end;
 end;

 begin
  aList:=nil;
  try
   aList:=TList.Create;
   case dwScope of
    OPC_ENUM_PRIVATE_CONNECTIONS,OPC_ENUM_PRIVATE:
     if Assigned(grps) then
      AddAGroup(grps);
    OPC_ENUM_PUBLIC_CONNECTIONS,OPC_ENUM_PUBLIC:
     if Assigned(pubGrps) then
      AddAGroup(pubGrps);
    OPC_ENUM_ALL_CONNECTIONS,OPC_ENUM_ALL:
     begin
     if Assigned(grps) then
      AddAGroup(grps);
     if Assigned(pubGrps) then
      AddAGroup(pubGrps);
     end
    else
     begin
      result:=E_INVALIDARG;
      Exit;
     end;
   end;

   if Assigned(aList) and (aList.count > 0) then
    ppUnk:=TS3UnknownEnumerator.Create(aList);
  finally
   aList.Free;
  end;
  result:=S_OK;
 end;

begin
 if not (IsEqualIID(riid,IEnumUnknown) or IsEqualIID(riid,IEnumString)) then
  begin
   result:=E_NOINTERFACE;
   Exit;
  end;

 if IsEqualIID(riid,IEnumString) then
  EnumerateForStrings
 else if IsEqualIID(riid,IEnumUnknown) then
  EumerateForUnknown
 else
  result:=E_FAIL;

end;


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产毛片一区二区| 亚洲国产精品综合小说图片区| 欧美视频完全免费看| 99久久er热在这里只有精品15| 国产精品一区二区在线播放| 九色porny丨国产精品| 男男视频亚洲欧美| 日韩**一区毛片| 麻豆精品在线播放| 精品一区二区av| 国产精品一区二区三区乱码| 国产美女精品人人做人人爽| 国产成人免费视频网站高清观看视频 | 亚洲综合男人的天堂| 亚洲欧美色图小说| 国产精品久久久久久久久免费丝袜| 久久先锋影音av| 国产精品视频在线看| 中文字幕一区在线观看视频| 亚洲人成网站在线| 亚洲妇熟xx妇色黄| 麻豆一区二区99久久久久| 国模一区二区三区白浆| 成人精品视频.| 欧美午夜不卡视频| 欧美一区二区福利在线| 国产日韩v精品一区二区| 亚洲精品日韩综合观看成人91| 成人免费在线观看入口| 天涯成人国产亚洲精品一区av| 久久久亚洲精品一区二区三区 | 91精品国产综合久久久久久久| 日韩欧美资源站| 久久免费精品国产久精品久久久久| 国产精品水嫩水嫩| 午夜欧美大尺度福利影院在线看| 久久福利资源站| 91在线视频观看| 日韩一区二区三区四区 | 亚洲欧美日韩综合aⅴ视频| 亚洲国产精品久久人人爱蜜臀| 久久狠狠亚洲综合| 99久久精品费精品国产一区二区| 欧美一区中文字幕| 国产精品国产三级国产普通话三级| 亚洲综合色视频| 国产成人午夜99999| 51精品视频一区二区三区| 中文天堂在线一区| 精品在线免费观看| 欧洲亚洲精品在线| 国产精品污污网站在线观看 | 视频精品一区二区| 99精品视频一区二区| 欧美成人精精品一区二区频| 亚洲欧美一区二区三区极速播放| 国产综合色在线| 欧美日韩精品免费| 亚洲免费三区一区二区| 国产精品乡下勾搭老头1| 欧美乱妇一区二区三区不卡视频| 中文字幕在线观看不卡视频| 国产麻豆精品视频| 日韩欧美国产系列| 中文字幕精品一区二区精品绿巨人 | 99久久综合国产精品| 欧美videofree性高清杂交| 亚洲精品国产无套在线观| 精东粉嫩av免费一区二区三区| 欧美日韩国产影片| 亚洲精品中文字幕在线观看| www.欧美色图| 中文字幕中文在线不卡住| 粉嫩av一区二区三区| 久久久久久99精品| 激情文学综合插| 精品福利视频一区二区三区| 秋霞电影一区二区| 欧美一卡二卡三卡| 另类人妖一区二区av| 国产一区二区不卡| 狠狠网亚洲精品| 欧美妇女性影城| 日韩福利视频网| 欧美一区二区美女| 国产综合久久久久影院| 精品处破学生在线二十三| 精品一区免费av| 国产亚洲一二三区| 粉嫩aⅴ一区二区三区四区五区| 亚洲国产精华液网站w| 成人av在线观| 伊人一区二区三区| 欧美肥大bbwbbw高潮| 日韩电影在线一区二区三区| 日韩精品一区二区三区四区 | 国产三级欧美三级日产三级99| 国产一区二区毛片| 日韩理论片网站| 欧美色综合网站| 久久99精品视频| 国产精品久久久久影院色老大| 色哟哟在线观看一区二区三区| 亚洲午夜久久久久久久久电影院| 欧美一区二区大片| jvid福利写真一区二区三区| 亚洲欧美色图小说| 日韩午夜在线观看| 成人性视频免费网站| 亚洲电影在线免费观看| 精品久久久久久综合日本欧美| 成人一区二区三区| 亚洲午夜一区二区三区| 精品国产一区二区三区久久影院 | 欧美成人官网二区| 成人爽a毛片一区二区免费| 亚洲激情一二三区| 久久网这里都是精品| 日本精品一级二级| 国产精品亚洲第一 | 欧美刺激午夜性久久久久久久| 成人精品高清在线| 蜜臀av一级做a爰片久久| 久久激五月天综合精品| 欧美成人在线直播| 91色在线porny| 久色婷婷小香蕉久久| 亚洲综合激情网| 国产精品女主播av| 精品国产乱码久久久久久图片 | 欧美亚洲日本国产| 粉嫩一区二区三区在线看| 免费在线看成人av| 亚洲一区二区av在线| 中文在线一区二区| www国产精品av| 欧美一区二区女人| 欧洲国内综合视频| 99riav一区二区三区| 国产精品自拍av| 久久成人综合网| 日本怡春院一区二区| 天天av天天翘天天综合网| 亚洲日本一区二区| 国产精品免费av| 午夜精品久久久久| 26uuuu精品一区二区| 777午夜精品免费视频| 欧美午夜一区二区| 91丨九色丨国产丨porny| 国产福利一区二区三区视频| 水野朝阳av一区二区三区| 亚洲一二三级电影| 亚洲一区在线观看免费| 亚洲一线二线三线视频| 国产精品进线69影院| 国产精品毛片大码女人| 中文字幕精品一区| 日本一区二区免费在线观看视频| 久久婷婷色综合| 久久免费国产精品| 国产精品日韩精品欧美在线| 久久久不卡网国产精品二区| 久久亚洲影视婷婷| 国产视频一区不卡| 国产精品久久久一本精品| 亚洲欧美色一区| 亚洲成av人影院| 日本在线播放一区二区三区| 丁香六月久久综合狠狠色| 精品一区二区免费在线观看| 午夜久久福利影院| 日韩av网站免费在线| 久久99日本精品| 国产成人在线视频网站| 波多野结衣视频一区| 欧美亚洲动漫精品| 日韩欧美黄色影院| 国产女主播一区| 一个色综合av| 九九久久精品视频| av在线不卡免费看| 欧美精选一区二区| 亚洲精品一区二区三区福利| 国产精品国产馆在线真实露脸| 亚洲一区在线观看视频| 麻豆一区二区99久久久久| 成人av在线播放网站| 欧美日韩精品一区二区在线播放| 欧美变态口味重另类| 日韩一区欧美小说| 奇米精品一区二区三区在线观看一| 高潮精品一区videoshd| 91成人在线免费观看| 久久久久一区二区三区四区| 五月天亚洲婷婷| 麻豆91免费看| 日本韩国视频一区二区| 6080午夜不卡| 中文字幕一区二|