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

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

?? main.~pas

?? DELPHI編寫OPC(一): 編寫OPC客戶端程序
?? ~PAS
?? 第 1 頁 / 共 2 頁
字號:
unit main;

interface



uses
{$IFDEF VER140}
  Variants,
{$ENDIF}
{$IFDEF VER150}
  Variants,
{$ENDIF}
{$IFDEF VER170}
  Variants,
{$ENDIF}
{$IFDEF VER180}
  Variants,
{$ENDIF}
  Windows, Messages, SysUtils,  Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, RzButton, RzCmboBx, ExtCtrls, RzPanel, ComCtrls,
  RzListVw,OPCDA,OPCenum,IniFiles, Grids,OPCtypes, ComObj, ActiveX,OPCutils,
  IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP,
  IdBaseComponent, IdMessage, Buttons, TFlatComboBoxUnit,
  TFlatRadioButtonUnit, TFlatGroupBoxUnit, TFlatMemoUnit, TFlatButtonUnit,
  TFlatPanelUnit, RzBckgnd, RzLine, RzLabel;
 type
    TReadThread = class(TThread)
        procedure Execute; override;
        //procedure EnumLocalUsersAndGroups(i:Integer);
    end;
const
  RPC_C_AUTHN_LEVEL_NONE = 1;
  RPC_C_IMP_LEVEL_IMPERSONATE = 3;
  EOAC_NONE = 0;
  const
  CM_RESTORE = WM_USER + $1000;
  MYappname = 'splc';       
type
  TOPCAdviseSink = class(TInterfacedObject, IAdviseSink)
  public
    procedure OnDataChange(const formatetc: TFormatEtc;
                            const stgmed: TStgMedium); stdcall;
    procedure OnViewChange(dwAspect: Longint; lindex: Longint); stdcall;
    procedure OnRename(const mk: IMoniker); stdcall;
    procedure OnSave; stdcall;
    procedure OnClose; stdcall;
  end;
  TOPCDataCallback = class(TInterfacedObject, IOPCDataCallback)
  public
    function OnDataChange(dwTransid: DWORD; hGroup: OPCHANDLE;
      hrMasterquality: HResult; hrMastererror: HResult; dwCount: DWORD;
      phClientItems: POPCHANDLEARRAY; pvValues: POleVariantArray;
      pwQualities: PWordArray; pftTimeStamps: PFileTimeArray;
      pErrors: PResultList): HResult; stdcall;
    function OnReadComplete(dwTransid: DWORD; hGroup: OPCHANDLE;
      hrMasterquality: HResult; hrMastererror: HResult; dwCount: DWORD;
      phClientItems: POPCHANDLEARRAY; pvValues: POleVariantArray;
      pwQualities: PWordArray; pftTimeStamps: PFileTimeArray;
      pErrors: PResultList): HResult; stdcall;
    function OnWriteComplete(dwTransid: DWORD; hGroup: OPCHANDLE;
      hrMastererr: HResult; dwCount: DWORD; pClienthandles: POPCHANDLEARRAY;
      pErrors: PResultList): HResult; stdcall;
    function OnCancelComplete(dwTransid: DWORD; hGroup: OPCHANDLE):
      HResult; stdcall;
  end;

type
  TFMain = class(TForm)
    Button2: TButton;
    FlatPanel1: TFlatPanel;
    Panel5: TFlatPanel;
    Image4: TImage;
    tippanel: TFlatPanel;
    Label26: TLabel;
    Label37: TLabel;
    FlatPanel2: TFlatPanel;
    FlatButton1: TFlatButton;
    IdMessage1: TIdMessage;
    IdSMTP1: TIdSMTP;
    RzGroupBox1: TRzGroupBox;
    RzComboBox1: TRzComboBox;
    RzPanel1: TRzPanel;
    RzPanel2: TRzPanel;
    Label4: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label5: TLabel;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Label6: TLabel;
    Edit13: TEdit;
    Edit14: TEdit;
    Edit15: TEdit;
    Edit16: TEdit;
    Edit17: TEdit;
    Edit18: TEdit;
    Label7: TLabel;
    Edit19: TEdit;
    Edit20: TEdit;
    Edit21: TEdit;
    Edit22: TEdit;
    Edit23: TEdit;
    Edit24: TEdit;
    FlatButton2: TFlatButton;
    FlatButton3: TFlatButton;
    Shape1: TShape;
    RzSeparator1: TRzSeparator;
    Label1: TLabel;
    Shape2: TShape;
    Label2: TLabel;
    Shape3: TShape;
    Label3: TLabel;
    Shape4: TShape;
    Label8: TLabel;
    Shape5: TShape;
    Label9: TLabel;
    Shape6: TShape;
    Label10: TLabel;
    Shape7: TShape;
    Label11: TLabel;
    RzLine1: TRzLine;
    RzLine2: TRzLine;
    RzLine3: TRzLine;
    RzLine4: TRzLine;
    RzLine5: TRzLine;
    RzLine6: TRzLine;
    RzLine7: TRzLine;
    RzLine8: TRzLine;
    RzLine9: TRzLine;
    RzLine10: TRzLine;
    RzLine11: TRzLine;
    RzLine12: TRzLine;
    RzListView1: TRzListView;
    RzLabel1: TRzLabel;
    Image3: TImage;
    RzLabel2: TRzLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    RzSeparator2: TRzSeparator;
    RzLine13: TRzLine;
    RzLine14: TRzLine;
    RzLine15: TRzLine;
    RzLine16: TRzLine;
    RzLine17: TRzLine;
    RzLine18: TRzLine;
    RzLine19: TRzLine;
    RzLine20: TRzLine;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FlatButton2Click(Sender: TObject);
    procedure FlatButton1Click(Sender: TObject);
    procedure FlatPanel2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Panel5MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure RzGroupBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure tippanelMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormShow(Sender: TObject);
    procedure FlatButton3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Image3DblClick(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
    sGroupCount:Integer;
    OPCServerList: TOPCServerList;
    CATIDs: array of TGUID;
    ServerNames: TStringList;
    LList:array[1..10,1..20]  of string;
    ServerIf: IOPCServer;
    GroupIf:array[1..10] of IOPCItemMgt;
    GroupIfTest:IOPCItemMgt;
    GroupHandle:array[1..10] of OPCHANDLE;
    GroupTestHandle :OPCHANDLE;
    ItemHandle:array[1..10,2..20] of OPCHANDLE;
    MyItemHandle:array[1..10,1..20] of OPCHANDLE;
    ItemTestHandle:OPCHANDLE;
    ItemType: TVarType;
    ItemValue: string;
    ItemQuality: Word;
    HR: HResult;
    AdviseSink: IAdviseSink;
    AsyncConnection: Longint;
    OPCDataCallback: IOPCDataCallback;
    StartTime: TDateTime;
    procedure createparams(var params: tcreateparams); override;
    procedure restorerequest(var message: tmessage); message CM_RESTORE;
    procedure EditValue(var An,Value:string;Aj:Integer);
    procedure EditNotGood(var An:string;value:string;Aj:Integer);
    procedure EditBadValue(var An:string);
  end;

var
  FMain: TFMain;


implementation

uses UserUnit;
{$R *.dfm}

procedure TReadThread.Execute;
var
  I,J:Integer;
  HR: HResult;
  ItemValue: string;
  ItemQuality: Word;
begin
    for i:=1 to FMain.sGroupCount  do
       for J:=2 to 20 do
       begin
           if  FMain.LList[i,j]<>'' then
           begin
           LogActivity(PChar('FMain.ItemHandle['+inttostr(i)+','+inttostr(j)+']'),PChar(IntToStr(OPCHANDLE(FMain.ItemHandle[i,j]))) );
           HR := ReadOPCGroupItemValue(FMain.GroupIf[i],FMain.ItemHandle[i,j], ItemValue, ItemQuality);
           if Succeeded(HR) then
           begin
                if (ItemQuality and OPC_QUALITY_MASK) = OPC_QUALITY_GOOD then
                begin
                          FMain.EditValue(FMain.LList[i,1],ItemValue,J);
                end
                else begin
                         FMain.EditNotGood(FMain.LList[i,1],'NotGood',j);
                end;
           end
           else begin
                        FMain.EditBadValue(FMain.LList[i,1]);
           end;
           end;
       end;
end;
procedure TFMain.createparams(var params:tcreateparams);
begin
    inherited CreateParams(Params);
    params.WinClassName := MYappname; 
end;
procedure TFMain.restorerequest(var message:tmessage);
begin
      if isiconic(application.Handle) = true then
        application.Restore
     else   application.BringToFront;
end;
procedure TOPCAdviseSink.OnDataChange(const formatetc: TFormatEtc;
                                      const stgmed: TStgMedium);
var
  PG: POPCGROUPHEADER;
  PI1: POPCITEMHEADER1ARRAY;
  PI2: POPCITEMHEADER2ARRAY;
  PV: POleVariant;
  I: Integer;
  PStr: PWideChar;
  NewValue: string;
  WithTime: Boolean;
  ClientHandle: OPCHANDLE;
  Quality: Word;
begin
  //stgmed.
  if (formatetc.cfFormat <> OPCSTMFORMATDATA) and
     (formatetc.cfFormat <> OPCSTMFORMATDATATIME) then Exit;
  WithTime := formatetc.cfFormat = OPCSTMFORMATDATATIME; 
  PG := GlobalLock(stgmed.hGlobal);
  if PG <> nil then
  begin
          PI1 := Pointer(PChar(PG) + SizeOf(OPCGROUPHEADER));
          PI2 := Pointer(PI1);
          if Succeeded(PG.hrStatus) then
          begin
                for I := 0 to PG.dwItemCount-1 do
                begin
                       if WithTime then
                       begin
                            PV := POleVariant(PChar(PG) + PI1[I].dwValueOffset);
                            ClientHandle := PI1[I].hClient;
                            Quality := (PI1[I].wQuality and OPC_QUALITY_MASK);
                       end
                       else
                       begin
                            PV := POleVariant(PChar(PG) + PI2[I].dwValueOffset);
                            ClientHandle := PI2[I].hClient;
                            Quality := (PI2[I].wQuality and OPC_QUALITY_MASK);
                       end; 
                       if Quality = OPC_QUALITY_GOOD then
                       begin
                            if TVarData(PV^).VType <> VT_BSTR then
                            begin
                                  NewValue := VarToStr(PV^);
                            end
                            else
                            begin
                                  PStr := PWideChar(PChar(PV) + SizeOf(OleVariant) + 4);
                                  NewValue := WideString(PStr);
                            end;
                            if WithTime then
                            begin
                               LogActivity(PChar('ClientHandle: '+inttostr(OPCHANDLE(ClientHandle))),pchar(NewValue));
                            end
                            else
                            begin
                               LogActivity(PChar(' Test: '+inttostr(OPCHANDLE(ClientHandle))),pchar(NewValue));
                            end;
                      end
                      else
                      begin
                            LogActivity(PChar('Test: '),pchar('but quality not good'));
                      end;
                  end;
            end;
    GlobalUnlock(stgmed.hGlobal);
  end;
end;

procedure TOPCAdviseSink.OnViewChange(dwAspect: Longint; lindex: Longint);
begin
end;

procedure TOPCAdviseSink.OnRename(const mk: IMoniker);
begin
end;

procedure TOPCAdviseSink.OnSave;
begin
end;

procedure TOPCAdviseSink.OnClose;
begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品天天摸av网| 在线观看成人小视频| 97精品视频在线观看自产线路二| 99久久精品情趣| 欧美精品粉嫩高潮一区二区| 精品国产1区2区3区| 国产精品电影院| 午夜精品久久久久久久久久久| 精品一区二区三区在线播放视频 | av成人免费在线观看| 在线影视一区二区三区| 日韩一区二区三区四区| 国产精品久久网站| 肉色丝袜一区二区| 国产成人亚洲精品青草天美| 色偷偷88欧美精品久久久 | 精品一区二区三区在线播放| gogo大胆日本视频一区| 欧美精品电影在线播放| 中文字幕不卡的av| 日韩国产在线观看| 99久久精品免费看国产| 欧美一区二区视频免费观看| 亚洲视频香蕉人妖| 激情综合色播五月| 欧美性受xxxx黑人xyx| 国产清纯在线一区二区www| 婷婷久久综合九色国产成人| 国产成人aaa| 日韩欧美一区中文| 亚洲激情第一区| 国产91丝袜在线播放九色| 欧美一二三四在线| 亚洲狼人国产精品| 高清国产一区二区| 日韩精品中文字幕在线一区| 亚洲一区二区三区自拍| 国产精品性做久久久久久| 欧美三级电影一区| 久久天天做天天爱综合色| 亚洲一二三区不卡| 成人三级伦理片| 欧美老年两性高潮| 亚洲人成网站精品片在线观看| 亚洲日本丝袜连裤袜办公室| 日韩av在线发布| 99精品久久99久久久久| 精品乱人伦小说| 亚洲影院免费观看| 成人国产亚洲欧美成人综合网| 日韩一区二区三区免费观看| 亚洲国产高清在线| 裸体一区二区三区| 欧美性受xxxx黑人xyx性爽| 国产精品丝袜在线| 激情五月播播久久久精品| 欧日韩精品视频| 国产日韩精品视频一区| 美女网站色91| 欧美剧在线免费观看网站| 亚洲男人都懂的| 国产精品123区| 欧美人xxxx| 亚洲影视资源网| 91亚洲精华国产精华精华液| 精品久久五月天| 五月天精品一区二区三区| 一道本成人在线| 中文字幕久久午夜不卡| 久久av老司机精品网站导航| 欧美日韩一区二区三区免费看| 亚洲三级视频在线观看| 成人免费的视频| 国产亚洲一区字幕| 国产自产高清不卡| 日韩小视频在线观看专区| 亚洲综合久久av| 欧美日韩在线精品一区二区三区激情 | 精品久久久久久久久久久久久久久 | 韩国午夜理伦三级不卡影院| 日韩一区二区在线免费观看| 亚洲不卡一区二区三区| 在线亚洲免费视频| 亚洲免费看黄网站| 色综合天天做天天爱| 中文字幕一区二区三区在线观看| 国产成人午夜电影网| 久久婷婷国产综合国色天香| 韩国女主播一区| 久久人人超碰精品| 国产乱码一区二区三区| 国产精品第一页第二页第三页| 岛国av在线一区| 国产精品美女久久福利网站| 丁香六月久久综合狠狠色| 国产欧美精品在线观看| 从欧美一区二区三区| 欧美国产日韩亚洲一区| 成人免费电影视频| 亚洲乱码国产乱码精品精可以看 | 国产精品国模大尺度视频| 99精品久久只有精品| 一区二区三区在线免费视频| 欧美日韩中文一区| 天天亚洲美女在线视频| 欧美电视剧在线看免费| 国产成人免费视频精品含羞草妖精| 国产人伦精品一区二区| 99视频精品全部免费在线| 亚洲精品五月天| 欧美老人xxxx18| 日本欧美大码aⅴ在线播放| 精品奇米国产一区二区三区| 国产精品2024| 亚洲欧美自拍偷拍色图| 色成人在线视频| 爽爽淫人综合网网站| 精品日韩在线观看| 成人久久18免费网站麻豆| 亚洲乱码国产乱码精品精小说| 欧美日本乱大交xxxxx| 毛片基地黄久久久久久天堂| 久久九九久精品国产免费直播| 99精品一区二区| 偷偷要91色婷婷| 日韩免费高清视频| 91丨国产丨九色丨pron| 亚洲成a人片在线不卡一二三区| 日韩一级二级三级| 盗摄精品av一区二区三区| 亚洲欧洲精品天堂一级| 欧美伦理影视网| 国产精品538一区二区在线| 亚洲在线免费播放| 久久影视一区二区| 91麻豆免费在线观看| 奇米精品一区二区三区四区| 国产精品免费视频网站| 精品视频1区2区| 国产在线不卡视频| 日韩在线一区二区| 国产精品色在线观看| 7777精品伊人久久久大香线蕉超级流畅| 国产精品自在在线| 亚洲午夜激情av| 久久久噜噜噜久久人人看| 欧美在线观看禁18| 国产一区二区精品久久| 亚洲午夜在线观看视频在线| 久久综合色8888| 欧美精选午夜久久久乱码6080| 国产盗摄一区二区| 婷婷国产在线综合| 国产精品久久久久久久久搜平片 | 欧美日韩国产a| 99久久久久久99| 国内精品国产三级国产a久久 | av在线播放不卡| 国内成+人亚洲+欧美+综合在线| 综合久久久久久| 国产精品理论片| 精品对白一区国产伦| 欧美日韩三级一区| 国产成人av自拍| 毛片基地黄久久久久久天堂| 一区二区三区四区精品在线视频| 国产婷婷精品av在线| 欧美一区二区网站| 欧美在线观看视频在线| 国产91在线|亚洲| 美女爽到高潮91| 天天色图综合网| 亚洲精品日日夜夜| 日本一区二区三区国色天香| 日韩一级完整毛片| 欧美猛男gaygay网站| 99久久伊人网影院| 久久亚洲精华国产精华液| 欧美色综合久久| 国产精品66部| 精品一区二区在线观看| 免费久久精品视频| 午夜欧美电影在线观看| 夜夜操天天操亚洲| 亚洲免费观看高清完整版在线观看熊| 中文天堂在线一区| 国产嫩草影院久久久久| 久久久三级国产网站| 亚洲国产高清在线| 国产色一区二区| 久久精品亚洲乱码伦伦中文| 精品成人免费观看| 精品国产一区二区三区不卡| 日韩三级视频在线观看| 91.com视频| 欧美成人vr18sexvr| 精品免费视频.| 欧美xfplay| 国产亚洲精久久久久久| 久久久777精品电影网影网 |