Vamos lá, isso são conceitos de Orientação a Objetos. 1º. No conceito de polimorfismo, por exemplo, tenho uma classe Animal, dela, crio uma classe chamado Cavalo e outra classe chamada Tubarão. Na classe Animal, eu crio um método Comer, mas não implemento ela, as quais só irei implementar nas classes Cavalo e Tubarão. Então eu crio uma variável chamada Animal1 da classe Animal, mas ao instanciar, instancio a classe Cavalo. Quando eu chamar o Animal.Comer, ele estará chamando o que eu instanciei na classe Cavalo. No nosso caso, o que foi instanciado foi um TFloatField, mas quando você pega um FieldByName, ele ta retornando a classe básica dele que é a Tfield, mas os métodos que ele irá executar, é a do TFloadField. 2º. Ele não executa o raise, porque para se chamar o método da classe Pai, precisa da chamada inherited, que nesse caso não foi implementado e foi simplesmente substituído pelo o que foi implementado. Entendeu? Abraços Eduardo -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Filipe Belchior Enviada em: sexta-feira, 22 de abril de 2005 14:04 Para: delphi-br@yahoogrupos.com.br Assunto: RES: [delphi-br] Re: TField... dúvida
bom, Eduardo, eu até pensei nisso mas... 1º. Eu disse q "não é obrigado" a implementação por causa de um exemplo... na classe TDataset (herdada por TTable e outros), o método FieldByName retorna uma TField, e não uma subclasse de TField, portanto não foi implementado o método GetAsCurrency ou GetAsFloat. 2º. Mais fundo ainda nessa curiosidade, é q, o método GetAsFloat não implementa nada mais q um "raise", nem o seu Result ele preenche, portanto, quando nós usamos a propriedade AsCurrency, estamos executando um raise!? --- Em delphi-br@yahoogrupos.com.br, "Eduardo E. J. Menoncello" <[EMAIL PROTECTED]> escreveu > Filipe, se ela não for implementada, ela criará um erro. > É por isso que os caras que fizeram isso colocaram o "raise". > > Então, se o seu TField trabalhar com boolean, por exemplo, e vc colocar > o AsFloat, ele vai dar erro. > Então eles simplesmente já trataram esse erro pra você, se não, a cada > implementação, teria que fazer esse tratamento. > > Espero ter esclarecido... ;) > > []'s > > Eduardo > > -----Mensagem original----- > De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] > Em nome de Filipe Belchior > Enviada em: sexta-feira, 22 de abril de 2005 13:29 > Para: delphi-br@yahoogrupos.com.br > Assunto: [delphi-br] Re: TField... dúvida > > > poxa pessoal, devo confessar q estou frustrado com as primeiras > resposta à minha "curiosidade". > > Eduardo, eu sei q o método GetAsCurrency "pode ser" implementado > por classes herdando TField, mas tbm "pode naum ser", pois, por ser > um método virtual não obrigado a sua implementação na subclasse. > E inclusive, o método GetAsCurrency já tem implementação na classe > TField... e é justamente essa implementação na TField a minha > curiosidade. > > Rubem, AsFloat e AsCurrency são propriedades e não métodos, e essas > duas propriedades chamam o método GetAsFloat. E outra, eu NÃO > tenho problema, estou discutindo um assunto produtivamaente. > > > Pessoal, a minha curiosidade está na implementação do método > GetAsFloat, pois é executado um "raise", sendo q o retorno do método > é um Double. > > > > --- Em delphi-br@yahoogrupos.com.br, Filipe Belchior > <[EMAIL PROTECTED]> escreveu > > olá pessoal! paz! > > > > Alguém poderia me explicar, em especial o método "protegido" > > GetAsCurrency... > > observei o fonte em DB.pas, e a classe TField... o método > GetAsCurrency > > chama > > o método GetAsFloat q, apesar de retornar um "Double", dentro do > método é > > exucutado um "raise"... num entendi nada!!!!! > > > > > > Filipe Belchior > > Itaguaí, RJ > > MSNM [EMAIL PROTECTED] > > SKYPE: filipebfs > > > > > [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE <http://br.rd.yahoo.com/SIG=12ajs3iv9/M=264379.5078783.6203979.1588051/D =brclubs/S=2137111264:HM/EXP=1114196679/A=2332652/R=0/id=noscript/SIG=11 9058f8i/*http:/br.download.yahoo.com/messenger/> _____ Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do <http://br.yahoo.com/info/utos.html> Serviço do Yahoo!. [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html