我写了一个VCL控件,提供一个Request的方法,定义如下:
  function Request(param:pointer):bool;  std另外提供一个如下的WINAPI
shi式的函数function VCLRequest(param:pointer):bool;  stdcall;供一个dll回调,我用gettickcount分别计时,结果发现调用VCLRequest时不时出现15-16ms的延时,而此时vcl的Request方法则几乎没有延时,百思不得其解

解决方案 »

  1.   

    function VCLRequest(param:pointer):bool; 
    var
      dd:cardinal;
    begin
      dd:=GetTickCount;
      result:=VCLObject.Request(param);
      dd:=GetTickCount-dd;
      //这里dd是VCL外部计算的延时
    end;function VCLObject.Request(param:pointer;):bool;
    var
      dd:cardinal;
    begin
      dd:=GetTickCount;
      ......//request代码
      dd:=GetTickCount-dd;
      //这里dd是VCL内部计算的延时,按道理这个dd和那个dd应该一样,但结果是
      //上面那个间或出现15-16ms的延时,而下面这个dd则几乎没有  
    end;
      

  2.   

    to 楼上:
       这个好象奇怪哦,就是从一个函数转到vcl类方法(函数指针类型不一样,但指针跳转由borland用汇编实现了,应该不可能寻址这么慢啊),跟踪也没有用