function FindKey(const KeyValues: array of const): Boolean;
function Format(const Format: string; const Args: array of const): string;假如我有一数组arrValues: array of Variant,如何传给FindKey 或 Format?即如何动态创建一个array of TVarRec的数组。谢谢!

解决方案 »

  1.   

      if DataSet.Locate('ZORDER;ZSQLTYPE', VarArrayOf([1, 0]), []) then
      begin
        //do something...
      end;
      

  2.   

    请注意动态数组(dynamic array)和开放数组(open array)的区别变量中声明的array of xxx均是open array,调用的时候写[xxx,xxx,xxx] <- 个数不限,参数申请的内存也不用自己管理,程序自动管理。而你在var声明的,是dynamic array,两者是不能直接赋值的。详细参看delphi帮助。
      

  3.   

    变量中声明的array of xxx
    --------------------------
    说的是函数的参数中声明的,没表达清楚,更正下。如果你要传递动态数组,必须要在type下声明一个类型,然后函数参数中写这个类型才可以。
      

  4.   

    谢谢大家热心。现在有 不定个 值保存在arrValues里面,
    要通过这些值创建一个array of const(TVarRec),如arrConstValues,如下:
      SetLength(arrConstValues, Length(arrValues));
      for i := Low(arrValues) to Hi(arrValues) do
        arrConstValues[i].PVariant := PVariant(@arrValues[i]);这样做出来的结果不能用。
    有什么能用的办法吗?