⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dxjs_extern.pas

📁 Well known and usefull component for delphi 7
💻 PAS
📖 第 1 页 / 共 5 页
字号:

function __setTime (var This:Variant;const Parameters:array of Variant) :Variant;
var
   T:TDateTime;
begin
   if Length (Parameters) =0 then
      T:=SysUtils.Time
   else
      T:=ToNumber (Parameters[0]) ;

   SetValueToScriptObject (This,T) ;
end;

function __setMilliseconds (var This:Variant;const Parameters:array of Variant) :Variant;
var
   Time:TDateTime;
   Hour,Min,Sec,MSec:Word;
begin
   Time:=ToNumber (This) ;
   SysUtils.DecodeTime (Time,Hour,Min,Sec,MSec) ;

   if Length (Parameters) >0 then
      MSec:=ToNumber (Parameters[0]) ;

   Time:=SysUtils.EncodeTime (Hour,Min,Sec,MSec) ;
   SetValueToScriptObject (This,Time) ;
end;

function __setSeconds (var This:Variant;const Parameters:array of Variant) :Variant;
var
   Time:TDateTime;
   Hour,Min,Sec,MSec:Word;
begin
   Time:=ToNumber (This) ;
   SysUtils.DecodeTime (Time,Hour,Min,Sec,MSec) ;

   if Length (Parameters) >0 then begin
      Sec:=ToNumber (Parameters[0]) ;
      if Length (Parameters) >1 then
         MSec:=ToNumber (Parameters[1]) ;
   end;

   Time:=SysUtils.EncodeTime (Hour,Min,Sec,MSec) ;
   SetValueToScriptObject (This,Time) ;
end;

function __setMinutes (var This:Variant;const Parameters:array of Variant) :Variant;
var
   Time:TDateTime;
   Hour,Min,Sec,MSec:Word;
begin
   Time:=ToNumber (This) ;
   SysUtils.DecodeTime (Time,Hour,Min,Sec,MSec) ;

   if Length (Parameters) >0 then begin
      Min:=ToNumber (Parameters[0]) ;
      if Length (Parameters) >1 then begin
         Sec:=ToNumber (Parameters[1]) ;
         if Length (Parameters) >2 then
            MSec:=ToNumber (Parameters[2]) ;
      end;
   end;

   Time:=SysUtils.EncodeTime (Hour,Min,Sec,MSec) ;
   SetValueToScriptObject (This,Time) ;
end;

function __setHours (var This:Variant;const Parameters:array of Variant) :Variant;
var
   Time:TDateTime;
   Hour,Min,Sec,MSec:Word;
begin
   Time:=ToNumber (This) ;
   SysUtils.DecodeTime (Time,Hour,Min,Sec,MSec) ;

   if Length (Parameters) >0 then begin
      Hour:=ToNumber (Parameters[0]) ;
      if Length (Parameters) >1 then begin
         Min:=ToNumber (Parameters[1]) ;
         if Length (Parameters) >2 then begin
            Sec:=ToNumber (Parameters[2]) ;
            if Length (Parameters) >3 then
               MSec:=ToNumber (Parameters[3]) ;
         end;
      end;
   end;

   Time:=SysUtils.EncodeTime (Hour,Min,Sec,MSec) ;
   SetValueToScriptObject (This,Time) ;
end;

function __setDate (var This:Variant;const Parameters:array of Variant) :Variant;
var
   Date:TDateTime;
   Year,Month,Day:Word;
begin
   Date:=ToNumber (This) ;
   SysUtils.DecodeDate (Date,Year,Month,Day) ;

   if Length (Parameters) >0 then
      Day:=ToNumber (Parameters[0]) ;

   Date:=EncodeDate (Year,Month,Day) ;
   SetValueToScriptObject (This,Date) ;
end;

function __setMonth (var This:Variant;const Parameters:array of Variant) :Variant;
var
   Date:TDateTime;
   Year,Month,Day:Word;
begin
   Date:=ToNumber (This) ;
   SysUtils.DecodeDate (Date,Year,Month,Day) ;

   if Length (Parameters) >0 then begin
      Month:=ToNumber (Parameters[0]) ;
      if Length (Parameters) >1 then
         Day:=ToNumber (Parameters[1]) ;
   end;

   Date:=EncodeDate (Year,Month,Day) ;
   SetValueToScriptObject (This,Date) ;
end;

function __setFullYear (var This:Variant;const Parameters:array of Variant) :Variant;
var
   Date:TDateTime;
   Year,Month,Day:Word;
begin
   Date:=ToNumber (This) ;
   SysUtils.DecodeDate (Date,Year,Month,Day) ;

   if Length (Parameters) >0 then begin
      Year:=ToNumber (Parameters[0]) ;
      if Length (Parameters) >1 then begin
         Month:=ToNumber (Parameters[1]) ;
         if Length (Parameters) >2 then
            Day:=ToNumber (Parameters[2]) ;
      end;
   end;

   Date:=SysUtils.EncodeDate (Year,Month,Day) ;
   SetValueToScriptObject (This,Date) ;
end;

function __abs (var This:Variant;const Parameters:array of Variant) :Variant;
begin
   if Length (Parameters) >0 then
      result:=Abs (ToNumber (Parameters[0]) ) ;
end;

function __acos (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else if D>1 then
         result:=NaN
      else if D<-1 then
         result:=NaN
      else
         result:=arccos (D) ;
   end;
end;

function __asin (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else if D>1 then
         result:=NaN
      else if D<-1 then
         result:=NaN
      else
         result:=arcsin (D) ;
   end;
end;

function __atan (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else if D>1 then
         result:=NaN
      else if D<-1 then
         result:=NaN
      else
         result:=arctan (D) ;
   end;
end;

function __atan2 (var This:Variant;const Parameters:array of Variant) :Variant;
var
   X,Y:Double;
begin
   if Length (Parameters) >1 then begin
      X:=ToNumber (Parameters[0]) ;
      Y:=ToNumber (Parameters[1]) ;
      if (X=NaN) or (Y=NaN) then
         result:=NaN
      else
         result:=arctan2 (X,Y) ;
   end;
end;

function __ceil (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else
         result:=ceil (D) ;
   end;
end;

function __cos (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else
         result:=cos (D) ;
   end;
end;

function __exp (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else
         result:=exp (D) ;
   end;
end;

function __floor (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else
         result:=floor (D) ;
   end;
end;

function __log (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else
         result:=ln (D) ;
   end;
end;

function __max (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D,Max:Double;
   I:Integer;
begin
   Max:=NEGATIVE_INFINITY;
   for I:=0 to Length (Parameters) -1 do begin
      D:=ToNumber (Parameters[I]) ;
      if D>Max then
         Max:=D;
   end;
   result:=Max;
end;

function __min (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D,Min:Double;
   I:Integer;
begin
   Min:=POSITIVE_INFINITY;
   for I:=0 to Length (Parameters) -1 do begin
      D:=ToNumber (Parameters[I]) ;
      if D<Min then
         Min:=D;
   end;
   result:=Min;
end;

function __pow (var This:Variant;const Parameters:array of Variant) :Variant;
var
   X,Y:Double;
begin
   if Length (Parameters) >1 then begin
      X:=ToNumber (Parameters[0]) ;
      Y:=ToNumber (Parameters[1]) ;
      if (X=NaN) or (Y=NaN) then
         result:=NaN
      else
         result:=power (X,Y) ;
   end;
end;

function __random (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   D:=random (1000) ;
   result:=D/1000;
end;

function __round (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
   I:Integer;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else begin
         I:=round (D) ;
         D:=I;
         result:=D;
      end;
   end;
end;

function __sin (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else
         result:=sin (D) ;
   end;
end;

function __sqrt (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else
         result:=sqrt (D) ;
   end;
end;

function __tan (var This:Variant;const Parameters:array of Variant) :Variant;
var
   D:Double;
begin
   if Length (Parameters) >0 then begin
      D:=ToNumber (Parameters[0]) ;
      if D=NaN then
         result:=NaN
      else
         result:=tan (D) ;
   end;
end;

function __concatArray (var This:Variant;const Parameters:array of Variant) :Variant;
var
   SourceArray:TScriptObject;
   DestArray:TArrayObject;
   I,J,L,Index:Integer;
   V:Variant;
begin
   DestArray:=TArrayObject.Create (VariantToScriptObject (This) .PScript) ;
   Index:=-1;

   SourceArray:=TArrayObject (VariantToScriptObject (This) ) ;
   L:=SourceArray.GetProperty ('length') ;

   for J:=0 to L-1 do begin
      Inc (Index) ;
      DestArray.PutProperty (IntegerToString (Index) ,SourceArray.GetProperty (IntegerToString (J) ) ) ;
   end;

   for I:=0 to Length (Parameters) -1 do begin
      V:=ToObject (Parameters[I],VariantToScriptObject (This) .PScript) ;
      SourceArray:=TArrayObject (VariantToScriptObject (V) ) ;
      if SourceArray.ClassProp='String' then begin
         Inc (Index) ;
         DestArray.PutProperty (IntegerToString (Index) ,SourceArray.DefaultValue) ;
      end
      else begin
         L:=SourceArray.GetProperty ('length') ;
         for J:=0 to L-1 do begin
            Inc (Index) ;
            DestArray.PutProperty (IntegerToString (Index) ,SourceArray.GetProperty (IntegerToString (J) ) ) ;
         end;
      end;
   end;

   result:=ScriptObjectToVariant (DestArray) ;
end;

function __joinArray (var This:Variant;const Parameters:array of Variant) :Variant;
var
   SourceArray:TScriptObject;
   S,Separator:string;
   J,L:Integer;
begin
   Separator:=',';
   if Length (Parameters) >0 then
      Separator:=ToString (Parameters[0]) ;

   SourceArray:=TArrayObject (VariantToScriptObject (This) ) ;
   L:=SourceArray.GetProperty ('length') ;

   result:='';

   for J:=0 to L-1 do begin
      S:=ToString (SourceArray.GetProperty (IntegerToString (J) ) ) ;
      result:=result+S;
      if J<L-1 then
         result:=result+Separator;
   end;
end;

function __toStringArray (var This:Variant;const Parameters:array of Variant) :Variant;
begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -