FindKey in fs_ibdertti

edited 1:27AM in FastScript
The "DoFindKey" function in "fs_ibdertti", is alreays sending an array with 32 values to the TTable.FindKey. The TTable component raised an "Field index out of range".

Please Help.
Christian


Comments

  • edited 1:27AM
    Change fs_itools.pas:
    type
      TVarRecArray = array of TVarRec;
    
    procedure VariantToVarRec(v: Variant; var ar: TVarRecArray);
    var
      i: Integer;
    begin
      SetLength(ar, VarArrayHighBound(v, 1) + 1);
    
      for i := 0 to VarArrayHighBound(v, 1) do
        case TVarData(v[i]).VType of
          varSmallint, varInteger, varByte:
            begin
              ar[i].VType := vtInteger;
              ar[i].VInteger := v[i];
            end;
          varSingle, varDouble, varCurrency, varDate:
            begin
              ar[i].VType := vtExtended;
              New(ar[i].VExtended);
              ar[i].VExtended^ := v[i];
            end;
          varBoolean:
            begin
              ar[i].VType := vtBoolean;
              ar[i].VBoolean := v[i];
            end;
          varOleStr, varString:
            begin
              ar[i].VType := vtString;
              New(ar[i].VString);
              ar[i].VString^ := v[i];
            end;
          varVariant:
            begin
              ar[i].VType := vtVariant;
              New(ar[i].VVariant);
              ar[i].VVariant^ := v[i];
            end;
        end;
    end;
    
    procedure ClearVarRec(var ar: TVarRecArray);
    var
      i: Integer;
    begin
      for i := 0 to Length(ar) - 1 do
        if ar[i].VType in [vtExtended, vtString, vtVariant] then
          Dispose(ar[i].VExtended);
      Finalize(ar);
    end;
    
  • edited 1:27AM
    ;)

    Thanks

Leave a Comment