unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, PaxProgram, PaxCompiler, StdCtrls, PaxRunner;type
  TForm1 = class(TForm)
    Button1: TButton;
    PaxCompiler1: TPaxCompiler;
    PaxPascalLanguage1: TPaxPascalLanguage;
    PaxProgram1: TPaxProgram;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
TDynArraya = array of String ;
var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
H_range,H_S,i: Integer;
tmeps,me:STRING;
TDynArray:TDynArraya;
begin
SetLength(TDynArray,2);
me:='';
tmeps:='TDynArray[0]:='+'''nihAAoa!''';
PaxCompiler1.Reset;
PaxCompiler1.RegisterLanguage(PaxPascalLanguage1);
H_range:=PaxCompiler1.RegisterVariable(0,'TDynArray',24);
H_S:=PaxCompiler1.RegisterDynamicArrayType(0,'TDynArray',24);
//H_range := PaxCompiler1.RegisterVariable(0, 'TDynArray', H_S, @TDynArray);//H_S:=PaxCompiler1.RegisterVariable(0,'me',5);
PaxCompiler1.AddModule('1', PaxPascalLanguage1.LanguageName); //添加PAX模块
  //PaxCompiler1.AddCode('1', 'var TDynArray: TDynArraya;'); //添加代码
  PaxCompiler1.AddCode('1', 'begin');
  PaxCompiler1.AddCode('1',tmeps);  PaxCompiler1.AddCode('1', 'end.');  if PaxCompiler1.Compile(PaxProgram1) then
  begin
    PaxProgram1.Run;
    showmessage(TDynArray[0]);
  end
  else
    for I:=0 to PaxCompiler1.ErrorCount do
      ShowMessage(PaxCompiler1.ErrorMessage[I]);
end;
end.试了N次,都搞不懂怎么注册和调用数组及动态数组。有懂的朋友望指点下。

解决方案 »

  1.   

    未曾使用paxCOMPILER。关注。
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      H_range, H_S, i: Integer;
      tmeps, me: string;
      TDynArray: TDynArraya;
    begin
      SetLength(TDynArray, 2);
      TDynArray[0] := 'hello in delphi';
      me := 'SetLength(TDynArray, 2);';
      tmeps := 'TDynArray[0]:= ''Hello in script'';';
      PaxCompiler1.Reset;
      PaxCompiler1.RegisterLanguage(PaxPascalLanguage1);
      H_S := PaxCompiler1.RegisterDynamicArrayType(0, 'TDynArraya', __typeSTRING);
      H_range := PaxCompiler1.RegisterVariable(0, 'TDynArray', PaxCompiler1.LookupTypeId('TDynArraya'), @TDynArray);
      PaxCompiler1.AddModule('1', PaxPascalLanguage1.LanguageName); //添加PAX模块  PaxCompiler1.AddCode('1', 'begin');
      PaxCompiler1.AddCode('1', tmeps);
      PaxCompiler1.AddCode('1', 'end.');
      if PaxCompiler1.Compile(PaxProgram1) then
      begin    showmessage('执行前' + (TDynArray[0]));
        PaxProgram1.Run;
        showmessage('执行后' + (TDynArray[0]));
      end
      else
        for I := 0 to PaxCompiler1.ErrorCount - 1 do
          ShowMessage('错误信息' + PaxCompiler1.ErrorMessage[I]);
    end;
      

  3.   

    谢谢你的回复,我在D10要指定__typeSTRING,但我填了24和7也不对,是什么原因?