passagem de parametro por referencia ?
Bom galera não sei bem se a solução do meu problema seria um metodo com passagem de parametro por referencia.
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:
porem tentei assim e não deu certo, alguem teria alguma sugestão ?
abraço galera !!!!
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
Curtidas 0
Respostas
Massuda
27/04/2007
[quote:1d7971dcfd=´Fabiano Góes´]porem tentei assim e não deu certo, alguem teria alguma sugestão ?[/quote:1d7971dcfd]Seu código aparentemente não tem problemas. Pelo que você postou, ele está funcionando assim...Tem certeza que não está dando erro no BD?
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
Fabiano Góes
27/04/2007
Massuda realmente funciona :oops:
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 ?
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
Rogick
27/04/2007
Sei lá, uma alternativa é, vc transformar a procedure eu uma function, passar a string no Result da function...
Ex:
Ou...
Passar este parametro como TObject ai vc passa o objeto ´inteiro´ e depois seta o valor na prop Text dele utilizando polimorfismo
Ex:
Espero ter ajudado :wink:
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
Rodc
27/04/2007
Você não poderia passar assim?
ConfigSystem(UmDataSet, @Edit1.Text, @Edit2.Text);
Tô sem o delphi para testarar, mas acho que funciona.
ConfigSystem(UmDataSet, @Edit1.Text, @Edit2.Text);
Tô sem o delphi para testarar, mas acho que funciona.
GOSTEI 0