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

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

?? dxjs_main.pas

?? Well known and usefull component for delphi 7
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
    AllocateEvalSpace;
  end;
  ScriptState := ss_Compiled;
end;

function TJScript.Run(RunMode: Integer = rmRun): boolean;
begin
  ScriptState := ss_Running;
  result := Postfix.Run(RunMode);
  if not result then begin
    if Assigned(fOnShowError) then fOnShowError(Error)
    else ShowError(Error);
  end;
  ScriptState := ss_Compiled;
end;

procedure TJScript.AddObject(const Name: String; Instance: TObject);
begin
  if Assigned(HostObjectList) then HostObjectList.AddObject(Name, Instance);
end;

procedure TJScript.AddRoutine(const Name: String; Address: Pointer);
begin
  if Assigned(HostDefinitionList) then
    HostDefinitionList.RegisterRoutine(Name, 0, Address, -1, KindDelphiRoutine);
end;

procedure TJScript.AddMethod(AClass: TClass; const Name: String; Address: Pointer);
var
  D: TDefinition;
begin
  if Assigned(HostDefinitionList) then begin
    D := HostDefinitionList.RegisterRoutine(Name, 0, Address, Integer(AClass.ClassInfo), KindDelphiMethod);
    D.AClass := AClass;
  end;
end;

procedure TJScript.AddConstructor(AClass: TClass; Address: Pointer);
begin
  if Assigned(HostConstructorList) then
    HostConstructorList.AddObject(DXString.UpperCase(AClass.ClassName), Address);
end;

procedure TJScript.AddProperty(AClass: TClass; const Name: String;
                               ReadAddr, WriteAddr: Pointer);
begin
  if Assigned(PropDefList) then
    PropDefList.RegisterProperty(AClass, Name, ReadAddr, WriteAddr);
end;

procedure TJScript.RemoveProperty(AClass: TClass; const Name: String);
var
  I: Integer;
  PropDef: TPropDef;
begin
  if Assigned(RemovePropList) then begin
    RemovePropList.AddObject(Name, TObject(AClass));
    for I:=0 to PropDefList.Count - 1 do begin
      PropDef := TPropDef(PropDefList.Objects[I]);
      if (PTypeInfo(PropDef.ClassID) = AClass.ClassInfo) and
         StrEql(PropDefList[I], Name) then begin
        PropDefList.Delete(I);
        PropDef.Free;
        Exit;
      end;
    end;
  end;
end;

procedure TJScript.AddHostVariable(const Name: String; Address: Pointer);
begin
  HostVariableList.AddObject(Name, Address);
end;

procedure TJScript.AddConstant(const Name: String; const Value: Variant);
begin
  ConstantList.AddConstant(Name, Value);
end;

procedure TJScript.ShowError(const Error: Variant);
var
  S: String;
  SO: TScriptObject;
begin
  SO := VariantToScriptObject(Error);
  S := ToString(SO.GetProperty('script time')) + ' error' + BR +
      ToString(SO.GetProperty('description')) + BR +
      'Module: ' + ToString(SO.GetProperty('module')) + BR +
      'File: ' + ToString(SO.GetProperty('file')) + BR +
      'Line number: ' + ToString(SO.GetProperty('line number')) + BR +
      ToString(SO.GetProperty('line'));
  if IsConsole then writeln(S)
  Else ErrMessageBox(S);
end;

procedure TJScript.CreateErrorObject(E: Exception);
var
  SO: TErrorObject;
  ModuleID, ModuleLineID: Integer;
  Module: TModule;
  P: Integer;
begin
  SO := TErrorObject.Create(Self);
  case ScriptState of
    ss_Compiling:begin
      P := Postfix.Card;
      SO.PutProperty('script time', 'Compile-time');
    end;
{    ssRunning:}
    Else begin
      P := Postfix.N;
      SO.PutProperty('script time', 'Run-time');
    end;
  end;
  ModuleID := Postfix.GetModuleID(P);
  ModuleLineID := Postfix.GetModuleLineID(P);
  Module := Modules[ModuleID];
  SO.PutProperty('description', E.Message);
  if Module <> nil then begin
    SO.PutProperty('module', Module.Name);
    if Module.FileName <> '' then SO.PutProperty('file', Module.FileName);
    if ModuleLineID < Module.Count then
      SO.PutProperty('line', Module.Strings[ModuleLineID]);
    SO.PutProperty('line number', ModuleLineID + 1);
  end;
  Error := ScriptObjectToVariant(SO);
end;

procedure TJScript.ClearModule(const Modulename:String);
Var
   I:Integer;
Begin
   I:=Modules.IndexOf(Modulename);
   If I>=0 then begin
      TModule(Modules.List[I]).Text:='';
      TModule(Modules.List[I]).FileName:='';
   End;
End;

function TJScript.GetID(const Name: String): Integer;
begin
  result := SymbolTable.FastLookUpID(Name, 0);
end;

function TJScript.GetValue(ID: Integer): Variant;
begin
  result := SymbolTable.GetValue(ID);
end;

procedure TJScript.PutValue(ID: Integer; const Value: Variant);
begin
  SymbolTable.PutValue(ID, Value);
end;

function TJScript.CallFunction(SubID: Integer; const Parameters: array of Variant): Variant;
var
  ID, I, L, LastCard, LastNP, LastOP, LastN, LastStackCard,
  TempBoundVar, StartPos, ParamCount,
  TempCurrBoundTable, TempCurrBoundStack: Integer;
begin
  ScriptState := ss_Running;
{  SymbolTable.SetupHostDefinitions;}
  LastCard := SymbolTable.Card;
  LastNP   := PostFix.Card;
  LastN    := Postfix.N;
  LastOP   := PostFix.OP;
  TempBoundVar := SymbolTable.MemBoundVar;
  LastStackCard := PostFix.Stack.Card;
  TempCurrBoundTable := Postfix.CurrBoundTable;
  TempCurrBoundStack := Postfix.CurrBoundStack;
  L := SymbolTable.AppLabel;
  SymbolTable.A[L].Level:=SubID;
//  SetLevel(L, SubID);
  StartPos := PostFix.Card;
  Postfix.App(SubID);
  Postfix.App(OP_SAVE_CALL);
  Postfix.App(L);
  ParamCount := 0;
  for I:=0 to Length(Parameters) - 1 do begin
    Inc(ParamCount);
    ID := SymbolTable.AppVariant(Parameters[I]);
    Postfix.App(ID);
  end;
  Postfix.App(SymbolTable.AppVariantConst(ParamCount));
  Postfix.App(OP_CALL);
  Postfix.App(OP_HALT);
  SymbolTable.A[L].Next:=Postfix.Card;
  Postfix.N := StartPos;
  Inc(Postfix.EvalCount);
  PostFix.Run;
  Dec(Postfix.EvalCount);
//  ShowMessageWindow('',GetValue(GetID('rslt')));
  if Postfix.Ok then result := Postfix.PopVariant;
  SymbolTable.EraseTail(LastCard);
  PostFix.Card := LastNP;
  SymbolTable.MemBoundVar := TempBoundVar;
  Postfix.CurrBoundTable := TempCurrBoundTable;
  Postfix.CurrBoundStack := TempCurrBoundStack;
  PostFix.Stack.Card := LastStackCard;
  PostFix.OP := LastOP;
  PostFix.N := LastN;
end;

procedure TJScript.SaveToStream(S: TStream);
begin
  SymbolTable.SaveToStream(S);
  Postfix.SaveToStream(S);
end;

procedure TJScript.LoadFromStream(S: TStream);
begin
  SymbolTable.LoadFromStream(S);
  Postfix.LoadFromStream(S);
  Postfix.N := 0;
  SymbolTable.SetupHostDefinitions;
end;

function TJScript.AddBreakpoint(const ModuleName: String; LineNumber: Integer): boolean;
var
  N: Integer;
begin
  N := SourceLineToPCodeLine(ModuleName, LineNumber);
  if N > 0 then begin
    Postfix.BreakpointList.Add(Pointer(N));
    result := true;
  end
  else result := false;
end;

function TJScript.RemoveBreakpoint(const ModuleName: String; LineNumber: Integer): boolean;
var
  N: Integer;
begin
  N := SourceLineToPCodeLine(ModuleName, LineNumber);
  if N > 0 then begin
    Postfix.BreakpointList.Remove(Pointer(N));
    result := true;
  end
  else result := false;
end;

procedure TJScript.RemoveAllBreakpoints;
begin
  Postfix.BreakpointList.Clear;
end;

function TJScript.SourceLineToPCodeLine(const ModuleName: String; LineNumber: Integer): Integer;
var
  Loop, ModuleID: Integer;
  Inside: boolean;

begin
  result := -1;
  ModuleID := Modules.IndexOf(ModuleName);
  if ModuleID > -1 then begin
     Inside := false;
     for Loop:=1 to Postfix.Card do begin
       if Postfix.A[Loop] <= BOUND_FILES then begin
         Inside := BOUND_FILES - Postfix.A[Loop] = ModuleID;
       end;
       if Inside then
         if BOUND_LINES - Postfix.A[Loop] = LineNumber then begin
           result := Loop;
           Exit;
         end;
     end;
  end;
end;

function TJScript.CurrentLineNumber: Integer;
begin
  result := -1;
  if ScriptState = ss_Compiling then result := Postfix.GetModuleLineID(Postfix.Card)
  else if Postfix.N > 0 then result := Postfix.GetModuleLineID(Postfix.N);
end;

function TJScript.CurrentLine: String;
var
  ModuleID, LineID: Integer;
begin
  result := '';
  ModuleID := Modules.IndexOf(CurrentModule);
  if (ModuleID >= 0) and (ModuleID < Modules.Count) then begin
    LineID := CurrentLineNumber;
    if LineID < Modules[ModuleID].Count then
      CurrentLine := Modules[ModuleID].Strings[LineID];
  end;
end;

function TJScript.CurrentModule: String;
var
  ModuleID: Integer;
begin
  result := '';
  if ScriptState = ss_Compiling then
     ModuleID := Postfix.GetModuleID(Postfix.Card)
  else begin
    if Postfix.N = 0 then Exit;
    ModuleID := Postfix.GetModuleID(Postfix.N);
  end;
  if (ModuleID >= 0) and (ModuleID < Modules.Count) then
    result := Modules[ModuleID].Name;
end;

function TJScript.CurrentFunction: String;
begin
  result := '';
  if ScriptState = ss_Compiling then begin
    if Parser.CurrLevel > 0 then
       result := SymbolTable.GetName(Parser.CurrLevel);
  end
  else begin
    if Postfix.CallStack.TopObject <> nil then begin
      if Postfix.CallStack.TopObject.SubID > 0 then
         result := SymbolTable.GetName(Postfix.CallStack.TopObject.SubID);
    end;
  end;
end;

type
  TCallStackObject = class
    Arguments: array of Variant;
    CurrentLineNumber: Integer;
    CurrentModule: String;
    CurrentLine: String;
  end;

procedure TJScript.ExtractCallStack(CallStack: TStringList);
var
  Loop, Loop2, Temp: Integer;
  CallObject: TCallObject;
  CallStackObject: TCallStackObject;
begin
  for Loop:=0 to CallStack.Count - 1 do CallStack.Objects[Loop].Free;
  CallStack.Clear;
  for Loop:=0 to Postfix.CallStack.Count - 1 do begin
    CallObject := TCallObject(Postfix.CallStack[Loop]);
    Temp := Postfix.N;
    Postfix.N := CallObject.N;
    CallStackObject := TCallStackObject.Create;
    CallStackObject.CurrentModule := CurrentModule;
    CallStackObject.CurrentLine := CurrentLine;
    CallStackObject.CurrentLineNumber := CurrentLineNumber;
    Postfix.N := Temp;
    SetLength(CallStackObject.Arguments, Length(CallObject.Arguments));
    for Loop2:=0 to Length(CallObject.Arguments) - 1 do
      CallStackObject.Arguments[Loop2] := CallObject.Arguments[Loop2];
    CallStack.AddObject(SymbolTable.GetName(CallObject.SubID), CallStackObject);
  end;
end;

procedure TJScript.ResetRun;
begin
  SymbolTable.ResetRun;
  Postfix.ResetRun;
end;

procedure TJScript.Terminate;
var
  Loop: Integer;
  Instance: TForm;
begin
  if ScriptState = ss_Running then begin
    ScriptState := ss_Compiled;
    for Loop:=0 to OpenWindows.Count - 1 do begin
      Instance := TForm(OpenWindows[Loop]);
      if Instance <> nil then Begin
        Instance.Close;
        Instance.Free; //1-17-2003 OZZ
      End;
    end;
    OpenWindows.Clear; // 1-17-2003
  end;
end;

procedure TJScript.Print;
{$IFDEF DUMP}
Var
  I: Integer;
  Ws: String;
  Module: TModule;
  T: TextFile;
{$ENDIF}  
begin
{$IFDEF DUMP}
  Ws:='';
  I:=0;
  While I<Modules.List.Count do Begin
     Module := TModule(Modules.List[I]);
     Ws:=Ws+'// Module:'+Module.Name+#13#10+Module.Text+#13#10;
     Inc(I);
  End;
  AssignFile(T,'source.jsd');
  Rewrite(T);
  Writeln(T,Ws);
  CloseFile(T);
  SymbolTable.Print('Symbol.jsd');
  Postfix.Print('Postfix.jsd');
  StdDefinitionList.Print('StdDefinitionList.jsd');
  HostDefinitionList.Print('HostDefinitionList.jsd');
  PropDefList.Print('PropDefList.jsd');
  HostVariableList.Print('HostVariableList.jsd');
  ConstantList.Print('ConstantList.jsd');
{$ENDIF}
end;

function ToBoolean(const Value: TVariant): Boolean;
begin
  result := DXJS_CONV.ToBoolean(Value);
end;

function ToNumber(const Value: TVariant): Double;
begin
  result := DXJS_CONV.ToNumber(Value);
end;

function ToInteger(const Value: TVariant): Integer;
begin
  result := DXJS_CONV.ToInteger(Value);
end;

function ToString(const Value: TVariant): String;
begin
  Result := DXJS_CONV.ToStr(Value);
end;

function ToDelphiObject(Value: TVariant): TObject;
begin
  result := DXJS_CONV.ToDelphiObject(Value);
end;

function DelphiObjectToVariant(Instance: TObject): Variant;
begin
  result := DXJS_CONV.DelphiObjectToVariant(Instance);
end;

function GetProperty(const ScriptObject: Variant; PropertyName: String): Variant;
begin
  result := VariantToScriptObject(ScriptObject).GetProperty(PropertyName);
end;

function IsPrimitive(const Value: Variant): boolean;
begin
  result := VarType(Value) <> varScriptObject;
end;

procedure AddRTTIType(pti: PTypeInfo);
begin
  RTTITypeList.AddObject(pti^.Name, TObject(pti));
end;

initialization
  Initialization_Share;
  RTTITypeList := TStringList.Create;
  AddRTTIType(TypeInfo(TObject));
finalization
  Finalization_Share;
  RTTITypeList.Free;
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频亚洲色图| 在线观看av一区| 粉嫩av亚洲一区二区图片| 成人性生交大片免费| 日本道色综合久久| 日韩欧美国产一区二区三区 | 亚洲国产综合色| 日韩中文字幕区一区有砖一区 | 欧美在线三级电影| 日韩西西人体444www| 久久久久久久久久久久久夜| 亚洲欧洲av在线| 日韩高清电影一区| 国产一区二区三区| 97精品电影院| 欧美亚洲动漫制服丝袜| 精品国产乱码久久久久久浪潮| 亚洲丝袜精品丝袜在线| 美女网站色91| 色欲综合视频天天天| 日韩欧美激情四射| 亚洲自拍偷拍网站| 国产黄色精品网站| 91精品在线观看入口| 国产精品少妇自拍| 亚洲成av人片在线| 成人手机电影网| 欧美久久一二区| 国产精品理伦片| 免费观看成人av| 色系网站成人免费| 精品国产91洋老外米糕| 香蕉久久一区二区不卡无毒影院 | 国产精品久久一级| 久久99国产精品免费| 欧美视频第二页| 国产精品乱人伦| 老鸭窝一区二区久久精品| youjizz国产精品| 欧美草草影院在线视频| 亚洲午夜日本在线观看| 国产91精品一区二区麻豆亚洲| 欧美日韩亚洲综合| 中文字幕国产精品一区二区| 精品无人区卡一卡二卡三乱码免费卡| 91黄色免费网站| 国产情人综合久久777777| 麻豆一区二区99久久久久| 色八戒一区二区三区| 中文字幕欧美区| 国产一区二区美女| 精品捆绑美女sm三区| 视频一区二区三区中文字幕| 日本韩国欧美三级| 中文字幕亚洲综合久久菠萝蜜| 国产在线日韩欧美| 欧美电视剧免费全集观看| 首页欧美精品中文字幕| 欧美色电影在线| 亚洲图片欧美视频| 99久久精品久久久久久清纯| 国产精品久久久久久户外露出| 国产一区二区免费在线| 欧美日韩在线不卡| 午夜一区二区三区在线观看| 91免费国产在线观看| 亚洲欧洲精品天堂一级| 99re这里都是精品| 亚洲视频一区二区免费在线观看| 成人小视频免费在线观看| 国产精品午夜免费| 粉嫩在线一区二区三区视频| 国产女人18水真多18精品一级做 | 欧美激情一区在线观看| 国产乱子轮精品视频| 久久综合999| 国产毛片精品一区| 国产视频亚洲色图| 成人激情小说乱人伦| 国产精品福利在线播放| 99国产一区二区三精品乱码| 亚洲人成在线观看一区二区| 91国偷自产一区二区三区观看| 亚洲欧美日韩国产中文在线| 欧美在线播放高清精品| 亚洲123区在线观看| 91精品国产综合久久久久久久| 日本少妇一区二区| 日韩精品资源二区在线| 激情文学综合丁香| 久久综合色综合88| 国产高清精品网站| 中文字幕在线播放不卡一区| 色综合久久久久| 亚洲超丰满肉感bbw| 欧美一区二区黄| 国产美女在线精品| 国产精品欧美一区二区三区| 色偷偷久久一区二区三区| 天天操天天综合网| 久久婷婷色综合| 91丨porny丨户外露出| 午夜电影久久久| 久久久国际精品| 日本黄色一区二区| 欧美aaaaaa午夜精品| 亚洲国产精品精华液2区45| 色综合久久久久网| 久久99精品国产.久久久久| 国产精品网曝门| 欧美色图第一页| 国产成人综合亚洲91猫咪| 亚洲男人的天堂av| 欧美成人在线直播| 97精品国产97久久久久久久久久久久| 午夜国产精品一区| 欧美激情一区二区三区四区| 欧美色图天堂网| 国产自产2019最新不卡| 一区二区在线观看av| 日韩亚洲欧美成人一区| eeuss鲁一区二区三区| 婷婷中文字幕综合| 亚洲国产精品成人综合| 欧美日韩国产免费一区二区| 国产一区二区三区在线看麻豆| 亚洲精品欧美在线| 久久蜜桃香蕉精品一区二区三区| 91行情网站电视在线观看高清版| 国产一二三精品| 日韩影院免费视频| 国产精品免费久久久久| 日韩一区二区三区电影| 97国产精品videossex| 激情综合网av| 亚洲一区二区三区在线播放| 国产女人aaa级久久久级 | 精品午夜一区二区三区在线观看| 亚洲免费在线视频| 国产亚洲女人久久久久毛片| 欧美日韩三级在线| 99久久精品免费观看| 国产伦精品一区二区三区免费| 婷婷综合另类小说色区| 亚洲视频一区在线观看| 久久久九九九九| 日韩一区二区在线观看| 日本精品视频一区二区| av网站一区二区三区| 国内精品免费在线观看| 天天综合网天天综合色| 亚洲精品精品亚洲| 国产欧美综合在线| 欧美tk—视频vk| 91精品国产综合久久小美女 | 日韩高清国产一区在线| 亚洲精品视频在线| 亚洲国产精品黑人久久久| 精品少妇一区二区三区| 欧美乱熟臀69xxxxxx| 欧美在线观看视频在线| 91麻豆文化传媒在线观看| 懂色一区二区三区免费观看| 老司机精品视频导航| 香蕉影视欧美成人| 亚洲成精国产精品女| 亚洲精选一二三| 日韩一区在线免费观看| 国产精品久久久久久久浪潮网站 | av动漫一区二区| 成人午夜电影久久影院| 国产一区二区三区在线观看免费视频| 免费在线看一区| 日韩av中文在线观看| 亚洲成人精品影院| 午夜久久久影院| 性久久久久久久久久久久| 亚州成人在线电影| 天堂成人免费av电影一区| 亚洲成av人影院| 日韩福利视频网| 麻豆视频一区二区| 老司机精品视频在线| 九九精品一区二区| 国产高清视频一区| jvid福利写真一区二区三区| 99riav久久精品riav| 在线影院国内精品| 欧美亚洲愉拍一区二区| 欧美日韩一区二区三区四区五区 | 日本不卡一二三区黄网| 日韩av中文在线观看| 久久精品国产在热久久| 九色综合狠狠综合久久| 国产麻豆精品theporn| 成人免费毛片嘿嘿连载视频| 99精品偷自拍| 在线免费不卡视频| 91.xcao| 日韩美女天天操|