Leslyn Fernandes wrote: > Desculpa alongar ainda mais o assunto, Lista é pra isso mesmo.
> mas como funciona esse "array of > const"? como é a declaração, e onde eu obtenho mais informações sobre o uso? Veja a declaração da função Format (como um exemplo) e veja o tipo TVarRec (no qual um array of const é convertido em tempo de compilação). Abaixo vai uma função que criei para passar um array of variant para a função Format: function VarFormat( const AFormat: string; const AArgs: array of Variant): string; var VConsts: array of TVarRec; VExtended: Extended; {$ifdef fpc} VInt64: Int64; {$endif} I: Integer; begin SetLength(VConsts, Length(AArgs)); for I := 0 to Pred(Length(AArgs)) do case TVarData(AArgs[I]).VType of varSmallint: begin VConsts[I].VType := vtInteger; VConsts[I].VInteger := TVarData(AArgs[I]).VSmallint; end; varInteger: begin VConsts[I].VType := vtInteger; VConsts[I].VInteger := TVarData(AArgs[I]).VInteger; end; varSingle: begin VExtended := TVarData(AArgs[I]).VSingle; VConsts[I].VType := vtExtended; VConsts[I].VExtended := @VExtended; end; varDouble: begin VExtended := TVarData(AArgs[I]).VDouble; VConsts[I].VType := vtExtended; VConsts[I].VExtended := @VExtended; end; varCurrency: begin VConsts[I].VType := vtCurrency; VConsts[I].VCurrency := @TVarData(AArgs[I]).VCurrency; end; varDate: begin VExtended := TVarData(AArgs[I]).VDate; VConsts[I].VType := vtExtended; VConsts[I].VExtended := @VExtended; end; varBoolean: begin VConsts[I].VType := vtBoolean; VConsts[I].VBoolean := TVarData(AArgs[I]).VBoolean; end; varByte: begin VConsts[I].VType := vtInteger; VConsts[I].VInteger := TVarData(AArgs[I]).VByte; end; varString: begin VConsts[I].VType := vtAnsiString; VConsts[I].VAnsiString := TVarData(AArgs[I]).VString; end; {$ifndef d5down} varShortInt: begin VConsts[I].VType := vtInteger; VConsts[I].VInteger := TVarData(AArgs[I]).VShortInt; end; varWord: begin VConsts[I].VType := vtInteger; VConsts[I].VInteger := TVarData(AArgs[I]).VWord; end; varLongWord: begin VConsts[I].VType := vtInteger; VConsts[I].VInteger := TVarData(AArgs[I]).VLongWord; end; varInt64: begin VConsts[I].VType := vtInt64; VConsts[I].VInt64 := @TVarData(AArgs[I]).VInt64; end; {$endif} {$ifdef fpc} varQWord: begin VInt64 := TVarData(AArgs[I]).VQWord; VConsts[I].VType := vtInt64; VConsts[I].VInt64 := @VInt64; end; {$endif} else raise EPressError.Create(SUnsupportedVariantType); end; Result := Format(AFormat, VConsts); end;