Obrigado pela resposta;

mas a ideia é justamente não ter que escrever ObterDigitalizacaoD  para cada 
tipo (TDigitalizacaoModulo, TDigitalizacaoPessoa ou TOQueFor)...pois tenho em 
vista utilizar esta mesma rotina para N outros tipos (neste exemplo eu passei 
apenas 2 de um lista), então mesmo com overload vou ter que no minimo copiar e 
colar.

sobre aquela ultima, eu poderia passar as 2 TStrings e o Tipo por parametros, 
mas esta me parece menos complidado de fazer.


Atenc;
Elazar



________________________________
De: Guionardo Furlan <guiona...@gmail.com>
Para: delphi-br@yahoogrupos.com.br
Enviadas: Quinta-feira, 2 de Julho de 2009 15:02:01
Assunto: Re: [delphi-br] (ENUM TYPES) Procedimentos genéricos





Pesquise por sobrecarga (overload) de procedures/function s. No próprio
help já tem a informação que vc precisa.
Pra ajudar mais um pouco, algum código:

function ObterDigitalizacaoD B(const Tipo: TDigitalizacaoModul o):
string; overload;
function ObterDigitalizacaoD B(const Tipo: TDigitalizacaoPesso a):
string; overload;

function ObterDigitalizacao( DB: string): TDigitalizacaoModul o; overload;
function ObterDigitalizacao( DB: string): TDigitalizacaoPesso a; overload;

Digitando esse código na seção interface da unit e teclando
alt-ctrl-c, o código será preenchido na seção implementation (como vc
deve saber). Aí é só completar.

** procedure DefinirDigitalizaca oDescricao( ListDescricao, ListTipo: TStrings);
Não vai funcionar pois a assinatura de parâmetros é igual nas duas
procedures. O compilador não vai saber qual usar.
É preciso encontrar outra solução.

Espero que tenha sido claro.

Aquele abraço.

2009/7/2 Elazar Dornelles Ceza <elazar...@yahoo. com.br>:
>
>
> Pessoal, bom dia
>
> Tenho alguns tipos enumerados e estou obtendo informações a respeito dos
> mesmos, no entanto gostaria de escrever rotinas genericas para obter estas
> informações conforme o 'tipo' passado como parametro.
>
> Neste momento eu tenho os seguintes tipos e arrays para armazenar as
> informações que vou precisar referente aos tipos.
>
> type
> TDigitalizacaoModul o = (dzmReconhecimento, dzmEncaminhamento, dzmEscritura,
> dzmRegistroProcurac ao);
> TDigitalizacaoPesso a = (dzpTodos, dzpFisica, dzpJuridica, dzpTabelionato) ;
>
> const
> DigitalizacaoModulo DB: array[TDigitalizaca oModulo] of string = ('R', 'E',
> 'S', 'X');
> DigitalizacaoModulo Descricao: array[TDigitalizaca oModulo] of string =
> ('Reconhecimento' , 'Encaminhamento' , 'Escritura', 'Registro Procuração');
>
> DigitalizacaoPessoa DB: array[TDigitalizaca oPessoa] of string = ('A', 'F',
> 'J', 'T');
> DigitalizacaoPessoa Descricao: array[TDigitalizaca oPessoa] of string =
> ('Todos', 'Física', 'Juridica', 'Tabelionato' );
>
> Para obter as informações de cada eu uso estas 3 funções para obter
> informações de um determinado Enum, como quero deixar 'genéreo'...gostaria
> de ter apenas 3 funções que poderiam ser utilizadas para qualquer tipo, será
> possivel?
>
> .....
> function ObterDigitalizacaoM oduloDB(Tipo: TDigitalizacaoModul o): string;
> function ObterDigitalizacaoM odulo(DB: string): TDigitalizacaoModul o;
> procedure DefinirDigitalizaca oModuloDescricao (ListDescricao, ListTipo:
> TStrings);
>
> function ObterDigitalizacaoP essoaDB(Tipo: TDigitalizacaoPesso a): string;
> function ObterDigitalizacaoP essoa(DB: string): TDigitalizacaoPesso a;
> procedure DefinirDigitalizaca oPessoaDescricao (ListDescricao, ListTipo:
> TStrings);
>
> ......
> .....
> .....
> .....
>
> { TDigitalizacaoModul o }
> function ObterDigitalizacaoM oduloDB(Tipo: TDigitalizacaoModul o): string;
> begin
> Result := DigitalizacaoModulo DB[Tipo];
> end;
>
> function ObterDigitalizacaoM odulo(DB: string): TDigitalizacaoModul o;
> var
> tDModulo: TDigitalizacaoModul o;
> begin
> for tDModulo := Low(TDigitalizacaoM odulo) to High(TDigitalizacao Modulo) do
> begin
> if DigitalizacaoModulo DB[tDModulo] = DB then
> Result := tDModulo;
> end;
> end;
>
> procedure DefinirDigitalizaca oModuloDescricao (ListDescricao, ListTipo:
> TStrings);
> var
> tDModulo: TDigitalizacaoModul o;
> begin
> if Assigned(ListDescri cao) then
> ListDescricao. Clear;
>
> if Assigned(ListTipo) then
> ListTipo.Clear;
>
> for tDModulo := Low(TDigitalizacaoM odulo) to High(TDigitalizacao Modulo) do
> begin
> if Assigned(ListDescri cao) then
> ListDescricao. Add(Digitalizaca oModuloDescricao [tDModulo] );
>
> if Assigned(ListTipo) then
> ListTipo.Add( DigitalizacaoMod uloDB[tDModulo] );
> end;
> end;
>
> { TDigitalizacaoPesso a }
> function ObterDigitalizacaoP essoaDB(Tipo: TDigitalizacaoPesso a): string;
> begin
> Result := DigitalizacaoPessoa DB[Tipo];
> end;
>
> function ObterDigitalizacaoP essoa(DB: string): TDigitalizacaoPesso a;
> var
> tDPessoa: TDigitalizacaoPesso a;
> begin
> for tDPessoa := Low(TDigitalizacaoP essoa) to High(TDigitalizacao Pessoa) do
> begin
> if DigitalizacaoPessoa DB[tDPessoa] = DB then
> Result := tDPessoa;
> end;
> end;
>
> procedure DefinirDigitalizaca oPessoaDescricao (ListDescricao, ListTipo:
> TStrings);
> var
> tDModulo: TDigitalizacaoPesso a;
> begin
> if Assigned(ListDescri cao) then
> ListDescricao. Clear;
>
> if Assigned(ListTipo) then
> ListTipo.Clear;
>
> for tDModulo := Low(TDigitalizacaoP essoa) to High(TDigitalizacao Pessoa) do
> begin
> if Assigned(ListDescri cao) then
> ListDescricao. Add(Digitalizaca oPessoaDescricao [tDModulo] );
>
> if Assigned(ListTipo) then
> ListTipo.Add( DigitalizacaoPes soaDB[tDModulo] );
> end;
> end;
>
> Atenc;
> Elazar
>   


      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

Responder a