imp_javascript.pas

来自「Delphi脚本控件」· PAS 代码 · 共 2,672 行 · 第 1/5 页

PAS
2,672
字号
  end;
end;

procedure _Date_getTime(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
    Result.AsVariant := ToNumber(DefaultValue);
end;

procedure _Date_getFullYear(MethodBody: TPAXMethodBody);
var
  Year, Month, Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.DelphiDate, Year, Month, Day);
    result.AsVariant := Integer(Year);
  end;
end;

procedure _Date_getUTCFullYear(MethodBody: TPAXMethodBody);
var
  Year, Month, Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.UTCDelphiDate, Year, Month, Day);
    result.AsVariant := Integer(Year);
  end;
end;

procedure _Date_getMonth(MethodBody: TPAXMethodBody);
var
  Year,Month,Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.DelphiDate, Year, Month, Day);
    result.AsVariant := Integer(Month - 1);
  end;
end;

procedure _Date_getUTCMonth(MethodBody: TPAXMethodBody);
var
  Year,Month,Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.UTCDelphiDate, Year, Month, Day);
    result.AsVariant := Integer(Month - 1);
  end;
end;

procedure _Date_getDate(MethodBody: TPAXMethodBody);
var
  Year,Month,Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.DelphiDate, Year, Month, Day);
    result.AsVariant := Integer(Day);
  end;
end;

procedure _Date_getUTCDate(MethodBody: TPAXMethodBody);
var
  Year,Month,Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.UTCDelphiDate, Year, Month, Day);
    result.AsVariant := Day;
  end;
end;

procedure _Date_getDay(MethodBody: TPAXMethodBody);
var
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    result.AsVariant := DayOfWeek(SO.DelphiDate) - 1;
  end;
end;

procedure _Date_getUTCDay(MethodBody: TPAXMethodBody);
var
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    result.AsVariant := DayOfWeek(SO.UTCDelphiDate) - 1;
  end;
end;

procedure _Date_getHours(MethodBody: TPAXMethodBody);
var
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.DelphiDate, Hour, Min, Sec, MSec);
    result.AsVariant := Integer(Hour);
  end;
end;

procedure _Date_getUTCHours(MethodBody: TPAXMethodBody);
var
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.UTCDelphiDate, Hour, Min, Sec, MSec);
    result.AsVariant := Integer(Hour);
  end;
end;

procedure _Date_getMinutes(MethodBody: TPAXMethodBody);
var
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.DelphiDate, Hour, Min, Sec, MSec);
    result.AsVariant := Integer(Min);
  end;
end;

procedure _Date_getUTCMinutes(MethodBody: TPAXMethodBody);
var
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.UTCDelphiDate, Hour, Min, Sec, MSec);
    result.AsVariant := Integer(Min);
  end;
end;

procedure _Date_getSeconds(MethodBody: TPAXMethodBody);
var
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.DelphiDate, Hour, Min, Sec, MSec);
    result.AsVariant := Integer(Sec);
  end;
end;

procedure _Date_getUTCSeconds(MethodBody: TPAXMethodBody);
var
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.UTCDelphiDate, Hour, Min, Sec, MSec);
    result.AsVariant := Integer(Sec);
  end;
end;

procedure _Date_getMilliseconds(MethodBody: TPAXMethodBody);
var
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.DelphiDate, Hour, Min, Sec, MSec);
    result.AsVariant := Integer(MSec);
  end;
end;

procedure _Date_getUTCMilliseconds(MethodBody: TPAXMethodBody);
var
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.UTCDelphiDate, Hour, Min, Sec, MSec);
    result.AsVariant := Integer(MSec);
  end;
end;

procedure _Date_setTime(MethodBody: TPAXMethodBody);
var
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    if ParamCount = 0 then
      SO.SetDelphiDate(Now())
    else
      SO.SetDefaultValue(ToNumber(Params[0].AsVariant));
  end;
end;

procedure _Date_setMilliseconds(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.DelphiDate, Hour, Min, Sec, MSec);
    if ParamCount > 0 then
      MSec := ToInt32(Params[0].AsVariant);
    Date := EncodeTime(Hour, Min, Sec, MSec);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setUTCMilliseconds(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.UTCDelphiDate, Hour, Min, Sec, MSec);
    if ParamCount > 0 then
      MSec := ToInt32(Params[0].AsVariant);
    Date := EncodeTime(Hour, Min, Sec, MSec);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setSeconds(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.DelphiDate, Hour, Min, Sec, MSec);
    if ParamCount > 0 then
      Sec := ToInt32(Params[0].AsVariant);
    if ParamCount > 1 then
      MSec := ToInt32(Params[1].AsVariant);
    Date := EncodeTime(Hour, Min, Sec, MSec);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setUTCSeconds(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.UTCDelphiDate, Hour, Min, Sec, MSec);
    if ParamCount > 0 then
      Sec := ToInt32(Params[0].AsVariant);
    if ParamCount > 1 then
      MSec := ToInt32(Params[1].AsVariant);
    Date := EncodeTime(Hour, Min, Sec, MSec);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setMinutes(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.DelphiDate, Hour, Min, Sec, MSec);
    if ParamCount > 0 then
      Min := ToInt32(Params[0].AsVariant);
    if ParamCount > 1 then
      Sec := ToInt32(Params[1].AsVariant);
    if ParamCount > 2 then
      MSec := ToInt32(Params[2].AsVariant);
    Date := EncodeTime(Hour, Min, Sec, MSec);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setUTCMinutes(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.UTCDelphiDate, Hour, Min, Sec, MSec);
    if ParamCount > 0 then
      Min := ToInt32(Params[0].AsVariant);
    if ParamCount > 1 then
      Sec := ToInt32(Params[1].AsVariant);
    if ParamCount > 2 then
      MSec := ToInt32(Params[2].AsVariant);
    Date := EncodeTime(Hour, Min, Sec, MSec);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setHours(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.DelphiDate, Hour, Min, Sec, MSec);
    if ParamCount > 0 then
      Hour := ToInt32(Params[0].AsVariant);
    Date := EncodeTime(Hour, Min, Sec, MSec);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setUTCHours(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Hour, Min, Sec, MSec: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeTime(SO.UTCDelphiDate, Hour, Min, Sec, MSec);
    if ParamCount > 0 then
      Hour := ToInt32(Params[0].AsVariant);
    Date := EncodeTime(Hour, Min, Sec, MSec);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setDate(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Year, Month, Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.DelphiDate, Year, Month, Day);

    if ParamCount > 0 then
      Day := ToNumber(Params[0].AsVariant) + 1;

    Date := EncodeDate(Year, Month, Day);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setUTCDate(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Year, Month, Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.UTCDelphiDate, Year, Month, Day);

    if ParamCount > 0 then
      Day := ToNumber(Params[0].AsVariant) + 1;

    Date := EncodeDate(Year, Month, Day);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setMonth(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Year, Month, Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.DelphiDate, Year, Month, Day);

    if ParamCount > 0 then
      Month := ToNumber(Params[0].AsVariant) + 1;
    if ParamCount > 1 then
      Day := ToNumber(Params[1].AsVariant) + 1;

    Date := EncodeDate(Year, Month, Day);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setUTCMonth(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Year, Month, Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.UTCDelphiDate, Year, Month, Day);

    if ParamCount > 0 then
      Month := ToNumber(Params[0].AsVariant) + 1;
    if ParamCount > 1 then
      Day := ToNumber(Params[1].AsVariant) + 1;

    Date := EncodeDate(Year, Month, Day);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setFullYear(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Year, Month, Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.DelphiDate, Year, Month, Day);

    if ParamCount > 0 then
      Year := ToNumber(Params[0].AsVariant);
    if ParamCount > 1 then
      Month := ToNumber(Params[1].AsVariant) + 1;
    if ParamCount > 2 then
      Day := ToNumber(Params[2].AsVariant) + 1;

    Date := EncodeDate(Year, Month, Day);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_setUTCFullYear(MethodBody: TPAXMethodBody);
var
  Date: TDateTime;
  Year, Month, Day: Word;
  SO: TPAXJavaScriptDateObject;
begin
  with MethodBody do
  begin
    SO := TPAXJavaScriptDateObject(Self);
    DecodeDate(SO.DelphiDate, Year, Month, Day);

    if ParamCount > 0 then
      Year := ToNumber(Params[0].AsVariant);
    if ParamCount > 1 then
      Month := ToNumber(Params[1].AsVariant) + 1;
    if ParamCount > 2 then
      Day := ToNumber(Params[2].AsVariant) + 1;

    Date := EncodeDate(Year, Month, Day);
    SO.SetDelphiDate(Date);
  end;
end;

procedure _Date_getTimezoneOffset(MethodBody: TPAXMethodBody);
begin
  with MethodBody do
  begin
    result.AsVariant := - (GetGMTDifference * SecsPerHour);
  end;
end;

/////////////// MATH ////////////////////////////////////

procedure _Math_abs(MethodBody: TPAXMethodBody);
var
  V: Variant;
begin
  with MethodBody do
  begin
    if ParamCount > 0 then
    begin
      V := ToNumber(Params[0].AsVariant);
      if V > 0 then
        result.AsVariant := V
      else
        result.AsVariant := - V;
    end;
  end;
end;

procedure _Math_acos(MethodBody: TPAXMethodBody);
var
  D: Double;
begin
  with MethodBody do
    if ParamCount > 0 then
    begin

⌨️ 快捷键说明

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