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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uglobals.pas

?? delphi 開發(fā)OPc工業(yè)通訊 delphi 開發(fā)OPc工業(yè)通訊
?? PAS
字號:
//******************************************************************************
// sOPC created by ACHAT SOLUTIONS GmbH, http://www.achat-solutions.de/
//******************************************************************************
unit uGlobals;

{$IFDEF VER150}
{$WARN UNSAFE_TYPE OFF}
{$ENDIF}

interface

uses
  Windows, ActiveX, SysUtils, ComObj,
  uLogging,
  OPCDA;

//******************************************************************************
const
 IID_IUnknown: TIID = '{00000000-0000-0000-C000-000000000046}';

//******************************************************************************
const
  ThreadingModel: TThreadingModel = tmFree;

type
  sMemoryKind = (mkHResult, mkItemState, mkItemResult, mkServerStatus,
    mkDWORD, mkPOleStr, mkVarType, mkOleVariant, mkWord, mkFileTime);

  sCreateHandles = class
  private
    GroupIndex: DWORD;
    ItemIndex: DWORD;
    CancelIndex: DWORD;

  public
    constructor Create;
    function Group: DWORD;
    function Item: DWORD;
    function CancelID: DWORD;
  end;

//******************************************************************************
var
  CreateHandles: sCreateHandles;
  Logging: TLogging;

//******************************************************************************
function ConvertToFileTime(DateTime: TDateTime): TFileTime;
// converts time format TDateTime in TFileTime

function TaskMemAlloc(dwCount: DWORD; mk: sMemoryKind; var aResult: HResult): pointer;
// allocates Task Memory

procedure TaskMemFree(Memory: pointer);
// releases Task Memory

procedure OPCLog(Text: string);
// logging function

procedure OPCLogException(Text: string; E: Exception);
// OPC Exception log

//******************************************************************************
implementation

//******************************************************************************
function ConvertToFileTime(DateTime: TDateTime): TFileTime;
var
  sTime: TSystemTime;
begin
  DateTimeToSystemTime(DateTime, sTime);
  SystemTimeToFileTime(sTime, Result);
  LocalFileTimeToFileTime(Result, Result);
end;

//******************************************************************************
// Allocate Task Memory
//******************************************************************************
function TaskMemAlloc(dwCount: DWORD; mk: sMemoryKind; var aResult: HResult): pointer;
// Result = nil -> no memory allocated
var
  Size: integer;
begin
  try
    Size := 0;
    case mk of
      mkHResult:         Size := dwCount * sizeof(HRESULT);
      mkItemState:       Size := dwCount * sizeof(OPCITEMSTATE);
      mkItemResult:      Size := dwCount * sizeof(OPCITEMRESULT);
      mkServerStatus:    Size := sizeof(OPCSERVERSTATUS);
      mkDWORD:           Size := dwCount * sizeof(DWORD);
      mkPOleStr:         Size := dwCount * sizeof(POleStr);
      mkVarType:         Size := dwCount * sizeof(TVarType);
      mkOleVariant:      Size := dwCount * sizeof(OleVariant);
      mkWord:            Size := dwCount * sizeof(word);
      mkFileTime:        Size := dwCount * sizeof(TFileTime);
    end;
    Result := CoTaskMemAlloc(Size);
    if Result = nil
      then aResult := E_OUTOFMEMORY
      else FillChar(Result^, Size, 0);
  except
    on E: Exception do begin
      Result := nil;
      OPCLogException('TaskMemAlloc', E);
    end;
  end;
end;

procedure TaskMemFree(Memory: pointer);
begin
  if Memory <> nil then CoTaskMemFree(Memory);
end;

//******************************************************************************
// sCreateHandles
//******************************************************************************

// switch set off, to avoid overflow exception
{$OVERFLOWCHECKS OFF}

constructor sCreateHandles.Create;
begin
  GroupIndex := 1;
  ItemIndex := 1;
  CancelIndex := 1;
end;

function sCreateHandles.Group: DWORD;
begin
  inc(GroupIndex);
  if GroupIndex = 0 then GroupIndex := 2;
  Result := GroupIndex;
end;

function sCreateHandles.Item: DWORD;
begin
  inc(ItemIndex);
  if ItemIndex = 0 then ItemIndex := 2;
  Result := ItemIndex;
end;

function sCreateHandles.CancelID: DWORD;
begin
  inc(CancelIndex);
  if CancelIndex = 0 then CancelIndex := 2;
  Result := CancelIndex;
end;

procedure OPCLog(Text: string);
begin
  if (Logging <> nil) then Logging.WriteIntoFile(Text);
end;

procedure OPCLogException(Text: string; E: Exception);
begin
  if Logging = nil then exit;
  Logging.WriteIntoFile(Format('%s %p %s - %s', [DateTimeToStr(Now), ExceptAddr, Text, E.Message]));
end;

initialization
  CreateHandles := sCreateHandles.Create;
  Logging := nil;

finalization

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区国色天香 | 国产欧美一区二区三区在线老狼| 欧美激情一区二区三区不卡 | 99久久免费视频.com| 日本丶国产丶欧美色综合| 91精品国产色综合久久不卡蜜臀| 国产精品久久久久久久久图文区 | 久久嫩草精品久久久精品一| 亚洲精品亚洲人成人网| 国产精品一区一区| 777精品伊人久久久久大香线蕉| 国产精品久久久久久久久快鸭 | 午夜精品一区二区三区免费视频| 粉嫩一区二区三区在线看| 欧美一区二区三区啪啪| 一级精品视频在线观看宜春院 | 美女精品一区二区| 日本高清不卡视频| 国产亚洲成aⅴ人片在线观看 | 视频一区二区三区在线| gogogo免费视频观看亚洲一| 亚洲精品一区二区三区精华液| 日本三级韩国三级欧美三级| 欧美日韩视频专区在线播放| 亚洲美腿欧美偷拍| 97精品久久久久中文字幕| 国产喂奶挤奶一区二区三区| 国产精品中文字幕一区二区三区| 日韩欧美国产午夜精品| 日本中文在线一区| 欧美三级电影在线看| 亚洲主播在线观看| 欧美视频一区二区三区在线观看| 亚洲欧洲精品成人久久奇米网| 午夜日韩在线观看| 欧美日韩黄视频| 亚洲乱码国产乱码精品精的特点 | 国产成人高清在线| 国产亚洲午夜高清国产拍精品| 国产一区二区免费看| 久久久久久9999| 国产成人av电影在线播放| 国产亚洲精品超碰| av电影在线观看不卡| 亚洲色图丝袜美腿| 欧美主播一区二区三区| 天堂影院一区二区| 久久丝袜美腿综合| av一二三不卡影片| 亚洲综合偷拍欧美一区色| 欧美日本在线看| 日韩va亚洲va欧美va久久| 欧美日韩精品福利| 亚洲成人动漫一区| 欧美日韩国产影片| 久久国内精品视频| 国产精品久久久久久久浪潮网站| 91免费视频网址| 日韩成人伦理电影在线观看| 久久日一线二线三线suv| 成年人国产精品| 午夜视黄欧洲亚洲| 久久久久国色av免费看影院| 色综合婷婷久久| 九色综合国产一区二区三区| 亚洲欧洲av在线| 91精品国产91久久综合桃花| 成人网页在线观看| 日韩中文字幕麻豆| 国产精品久久毛片av大全日韩| 欧美日韩久久久一区| 国产精品一区二区在线看| 亚洲午夜激情网页| 国产午夜亚洲精品理论片色戒| 欧美主播一区二区三区| 日韩电影在线免费看| 久久众筹精品私拍模特| 在线精品视频免费观看| 激情成人午夜视频| 亚洲国产综合色| 国产亚洲成av人在线观看导航| 精品视频一区 二区 三区| 国产91精品一区二区麻豆网站| 亚洲午夜视频在线| 国产精品毛片a∨一区二区三区| 欧美一二三区在线| 色吧成人激情小说| 国产成人在线网站| 美国毛片一区二区三区| 一区二区三区影院| 国产嫩草影院久久久久| 日韩欧美的一区二区| 日本韩国视频一区二区| 国产成人午夜精品影院观看视频 | 一本色道a无线码一区v| 久久99国产精品免费| 一级中文字幕一区二区| 国产精品视频在线看| 精品久久久久久久久久久久久久久| 欧美性感一区二区三区| 成人国产精品免费观看动漫| 久久精品国产色蜜蜜麻豆| 天天色天天操综合| 性久久久久久久久久久久| 亚洲美女免费视频| 一区在线播放视频| 国产精品拍天天在线| 国产欧美精品区一区二区三区| 久久日一线二线三线suv| 精品电影一区二区三区| 欧美mv日韩mv亚洲| 日韩精品一区在线| 欧美sm美女调教| 久久日一线二线三线suv| 久久新电视剧免费观看| 丝瓜av网站精品一区二区| 亚洲欧美日韩人成在线播放| 久久久久国产精品人| 久久天天做天天爱综合色| 久久综合久色欧美综合狠狠| 337p日本欧洲亚洲大胆色噜噜| 欧美精品一区二区三区四区| 久久综合中文字幕| 久久久久99精品一区| 国产视频一区在线播放| 欧美高清在线精品一区| 1000精品久久久久久久久| 亚洲欧美日韩国产中文在线| 亚洲国产欧美在线| 免费视频最近日韩| 国产剧情在线观看一区二区| 成人小视频在线| 色婷婷av一区二区三区大白胸| 欧美日韩国产一级片| 日韩一区二区视频在线观看| 久久老女人爱爱| 国产精品福利一区二区三区| 亚洲自拍另类综合| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品99久| 精品视频一区二区三区免费| 色综合激情五月| 欧美日本一区二区| 欧美成人精品高清在线播放| 国产精品日韩成人| 亚洲综合一区二区| 精品一区二区三区免费播放| jlzzjlzz欧美大全| 欧美日韩成人综合天天影院 | 成人网页在线观看| 欧美三级欧美一级| 久久久久久久久岛国免费| 亚洲欧美另类久久久精品2019| 午夜电影一区二区三区| 国内久久婷婷综合| 在线视频一区二区免费| 久久免费美女视频| 亚洲国产一区视频| 国产成人精品一区二区三区四区| 色婷婷综合五月| 亚洲精品一区二区三区福利| 亚洲亚洲精品在线观看| 国产一区二区三区蝌蚪| 在线免费不卡视频| 国产喂奶挤奶一区二区三区| 日韩亚洲欧美中文三级| 久久久亚洲精品石原莉奈| 一区二区三区欧美日韩| 国产在线不卡一区| 欧美剧情电影在线观看完整版免费励志电影 | 久久久久久久久99精品| 香蕉久久一区二区不卡无毒影院 | 欧美精品在线视频| 国产精品毛片a∨一区二区三区| 青娱乐精品视频| 欧美性大战xxxxx久久久| 国产婷婷色一区二区三区四区| 偷偷要91色婷婷| 色94色欧美sute亚洲线路二| 国产日韩欧美一区二区三区乱码| 日韩经典中文字幕一区| 日本精品一区二区三区高清| 中文乱码免费一区二区| 国产乱子伦视频一区二区三区| 日韩欧美一区中文| 天天av天天翘天天综合网| 欧洲精品一区二区| 综合婷婷亚洲小说| 99精品国产99久久久久久白柏| 久久久不卡影院| 韩国三级电影一区二区| 8v天堂国产在线一区二区| 性做久久久久久久免费看| 欧美性xxxxxx少妇| 亚洲欧美影音先锋| 99久久99精品久久久久久| 中文字幕一区二区在线观看| 成人app网站| 亚洲欧美韩国综合色| 日本乱码高清不卡字幕|