Variant变量是在程序运行是分配地址,所以编译时不会显示运行时可能出现的错误(如调用不存在的方法等)。
你的错误在于:
PVarAry:=varArrayLock(FvarAry);这句。
varArrayLock返回具有和Variant数组相同特性的Delphi数组,这意味着在这里。
Var DelphiArray: Array [下界..上界] of Integer;
对应于:VarArrayCreate([0,FvarintCount],varinteger);
所以应该用:
DelphiArray := varArrayLock(FvarAry);—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
             毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
  I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
    

解决方案 »

  1.   

    to: lxpbuaa以下是varArrayLock的定义,其返回值是一个指针,而不是你说的数组
    function VarArrayLock(var A: Variant): Pointer;另附上一个delphi的例子,帮助里的:
     type  PArrayData = ^TArrayData;
      TArrayData = array[0..9, 1..3] of Integer;
    var
      A: Variant;
      P: PArrayData;
      I, J: Integer;
    begin
      A := VarArrayCreate([1, 3, 0, 9], varInteger);
      P := VarArrayLock(A);
      try
      for I := 0 to 9 do
        for J := 1 to 3 do
          P^[I, J] := J * 10 + I;  finally
        VarArrayUnlock(A);  end;
      WriteLn(A[1, 9]); { 19 }
      WriteLn(A[3, 4]); { 34 }end;
      

  2.   

    每人能解决???csdn上没高手吗??、倒。