Llamar a funcion sin definir todos los parametros
Buenos dias
es posible en Delphi llamar a una funcion con parametros sin necesidad de indicarle la totalidad de los parametros? por ejemplo
|
Sí, es posible cuando la función tiene parámetros declarados con valor predeterminado:
|
debo entender que si no los tiene predeterminado no se puede? :confused:
|
Cita:
|
mmmm
yo provengo de otro lenguaje (Visual Fox - aunque algunos no lo consideran un lenguaje) como sea... en Fox nuo podia llamar a una funcion inclusive sin parametros EstablecerRangos() Cita:
se llama a la funcion sin parametros.. dentro de la funcion se pregunta si el tipo de Variable (del parametro) es Undefined o no definido, entonces toma un valor. caso contratio es un valor definido y conserva su valor.... no he visto hasta el momento en Delphi algo parecido |
Me dio algo de nostalgia el ejemplo que expones. No porque le tuviera mucho cariño a FoxPro (también lo usé pero desde los tiempos en que todavía no existía la versión "visual"), sino por lo emocionante que era sacarle provecho hasta la última de sus limitadas capacidades como lenguaje (aquello de 5 niveles de llamadas como máximo era una majadería).
En Delphi sí que has visto ya algo parecido y que además requiere mucho menos código: los parámetros con valor predeterminado. :) |
yo tambien use el Foxpro en sus primeras versiones... recuerdo la FoxproLn 2.0 version para redes
y aun es ese limitado lenguaje desarrolle rutinas de busqueda incremental en un "popup" simulado, asi como reportes "armados" que columnas variables e incluso recursividad |
Encontré esto entre mis recuerdos, que de recuerdos tienen poco pues leo mi propio código de entonces y no entiendo nada. :D :o
Código:
* Introducir Teclaso Corrector. Para usarse antes de un Read (o continuaci¢n |
Por cierto, en aquellos años tuve el descaro de diseñar un sistema de ventanas, menús y escritorio bastante más flexible que el nativo, incluyendo la capacidad de cerrar la aplicación en cualquier momento y abrirla nuevamente con todo lo que había en pantalla tal y como estaba (ventanas, variables, e incluso el cursor de teclado en el mismo objeto).
Aquello era como hacer "hibernar" a la aplicación, o como una especie de "snap shot" con el que se podía restaurar la sesión aún habiendo apagado o cambiado de computadora. Estaba encantado con aquellos pequeños artilugios. Ahhhh, que tiempos... :) |
yo encontre esta...
que me seria muy util en Delphi para cuando tengo un campo que debe ser validado Cita:
Cita:
lo que hace esto es... en el primer GET o edit. no me permitira "subir", entonces lo que coloque en el campo o variable... sera validado pero.... en el segundo get si me permite subir antes de validar la variable... como dije... esto me seria muy util en Delphi |
Yo tuve un paso fugaz por FoxPro y lo que hice fue un sistema de menús que calcaba el de Turbo Pascal.
// Saludos |
se me acaba de ocurrir una idea...
muchos de nosotros (los que provenimos de otros lenguajes) ya teniamos ciertas rutinas las cuales nos facilitaban la vida es por eso que propongo la creacion de un mural donde "expongamos" las soluciones que le hemos dado en el lenguaje delphi por ejemplo en Foxpro tenia la funcion IIF (asi como el iif de Access) la solucion en delphi la hice asi
y su aplicacion....
|
Cita:
A manera informativa, te cuento que existe otra manera de lograr el efecto de utilizar un mismo método con diferentes parámetros, inclusive con diferentes tipos de parámetros... y que por supuesto te va a parecer mas largo, pero es bastante util en diferentes circunstancias... estos son los métodos sobrecargados (overload)... Código:
|
Ja, ja, creo que respondimos al tiempo y veo que ya tienes implementado tu overload...
curiosamente yo tengo implementada la misma funcion iif en mis programas hace tiempo aunque la implemente con un Variant y así me evité el Overload: Código:
Function IIF(blnCondicion_p:Boolean; varValorSiVerdadero_p:Variant;varValorSiFalso_p:Variant):Variant; |
Hola...
En Delphi ya existen funciones que realizan eso: IfThen en las unidades Math y StrUtils Saludos... |
obvio que existen !!!!
pero me refiero a la practicidad.... con la funcion determino 1 dato en 1 sola linea |
Hola...
No se que entendiste, pero la función mencionada hace eso precisamente, en una sola línea puedes determinar un solo dato:
Saludos... |
ohhhhhhhh ya caigo
|
El problema con esas funciones es el costo que tiene para la aplicación, porque el compilador no las transforma en código máquina equivalente a un If...Then normal.
Por ejemplo, si el tercer parámetro dado a IfThen es una expresión que llama a otra rutina, ésta se ejecutará aunque el primer parámetro sea True, es decir, se realizará un procesamiento inútil. Y aun cuando las expresiones dadas como valores a devolver sean simples valores literales o variables, la carga para la CPU seguirá siendo mayor que la de un If...Then normal (incluso si IfThen fuese compilada como una función in line). Supongo que todavía no se agrega un operador ternario en las últimas versiones del compilador de Delphi. Espero que eso ocurra, pero ruego al cielo que no vaya a ser tan horrible como el de C. :p Gato: Sólo son métodos las rutinas que pertenecen a una clase. Al no estar dentro de una clase, hablamos entonces de funciones / procedimientos independientes (sueltos). Saludos. Al González. :) AÑADO: Claro, pueden hacerse sobrecargas tanto de métodos como de rutinas sueltas. |
Al González siempre tan oportuno e iluistrativo con sus comentarios
|
La franja horaria es GMT +2. Ahora son las 19:47:14. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi