Fórum passagem de parametro por referencia ? #341028
27/04/2007
0
meu problema:
tenho uma tabela que armazena dados para configuração automática do sistema, não sei se é possivel mais pensei em algo assim:
procedure ConfigSystem(ADataSet: TClientDataSet; var AVariavel1: string; var AVariavel2: integer); begin ADataSet.Open; try AVariavel1 := ADataSet.FieldValues[´Campo1´]; AVariavel2 := ADataSet.FieldValues[´Campo2´]; finally ADataSet.Close; end; end;
porem tentei assim e não deu certo, alguem teria alguma sugestão ?
abraço galera !!!!
Fabiano Góes
Curtir tópico
+ 0Posts
27/04/2007
Massuda
var V1: string; V2: Integer; ... ConfigSystem(UmDataSet, V1, V2); // V1 = valor lido do campo Campo1 do dataset // V2 = valor lido do campo Campo2 do dataset ...
Gostei + 0
27/04/2007
Fabiano Góes
o problema era que na assinatura do metodo = V1: string
quando eu passava o parametro eu passava um TEdit.Text ai dava erro,
mais passando uma variavel string como parametro e depois jogando ela no TEdit funciona.
eu poderia mudar a assinatura de V1: string para V1: TEdit porem alguns se eu precisar usar o mesmo metodo para um TComboBox ?
por isso tinha assinado como string e passava TEdit.Text ou TComboBox.Tex.
como poderia fazer para poder passar tanto um TEdit.Text quanto um TComboBox.Text ?
Gostei + 0
27/04/2007
Rogick
Ex:
function ConfigSystem(ADataSet: TClientDataSet; var AVariavel2: integer): string; begin ADataSet.Open; try Result := ADataSet.FieldValues[´Campo1´]; AVariavel2 := ADataSet.FieldValues[´Campo2´]; finally ADataSet.Close; end; end;
Ou...
Passar este parametro como TObject ai vc passa o objeto ´inteiro´ e depois seta o valor na prop Text dele utilizando polimorfismo
Ex:
procedure ConfigSystem(ADataSet: TClientDataSet; var Sender: TObject; var AVariavel2: integer); begin ADataSet.Open; try // Serve p/ Edit, DBEdit, MAskEdit, ect. if (Sender is TCustomEdit) then (Sender as TCustomEdit).Text := ADataSet.FieldValues[´Campo1´]; if (Sender is TCombobox) then (Sender as TCombobox).Text := ADataSet.FieldValues[´Campo1´]; ... AVariavel2 := ADataSet.FieldValues[´Campo2´]; finally ADataSet.Close; end; end;
Espero ter ajudado :wink:
Gostei + 0
27/04/2007
Rodc
ConfigSystem(UmDataSet, @Edit1.Text, @Edit2.Text);
Tô sem o delphi para testarar, mas acho que funciona.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)