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]