FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Se puede hacer un array de procedures
Hola
Explico el caso, supongamos que tengo un comboBox con el nombre de varias funciones, HacerBalance Facturar ComprobarIvaClientes CheckEntregas CheckPedidos etc.... Si el usuario va seleccionando, por que le conviene dos de ellos ( o los que quiera), se puede hacer un array con los procedure, recorrer el array y que se ejecute el procedure dependiendo de la posición del array recorrido. Enfin , lo veo un poco enrevesado, pero si existiera algo así seria tremendo. |
#2
|
|||
|
|||
claro que yes.. pero te convendria mejor del combo un CheckListBox..
Ufff.........
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton |
#3
|
|||
|
|||
no, no es lo que busco, primero quiero que sea un comboBox, porque ocupa menos espacio, aunque un comboBox con checks por el momento no estaria mal, pero luego con ese procedimiento no eliges el orden de los procedimientos, el orden siempre puede variar.
|
#4
|
||||
|
||||
Hola David...
Con el ejemplo que te da pcicom es una base muy buena aun cuando lo quieras implementar con un ComboBox... En el evento Change del ComboBox sería: . . . etc... y así con todos los procedimientos que quieras elaborar... Saludos |
#5
|
|||
|
|||
Bueno, estan lo que seria array de procedure of object...
tiene 5 buttons los cinco asignados el onbuttonclick a Button1Click; (los nombres tienen q ser Button1,Button2, etc...) en tu caso seria usar
saludos Última edición por coso fecha: 21-06-2008 a las 15:35:43. |
#6
|
|||
|
|||
Lo que ha puesto coso es lo que queria, he realizado un pequeño ejemplo que adjunto.
|
#7
|
|||
|
|||
lo mismo, solo que un poco mas simplificado ...
; saludos PD : seguro que hay tambien alguna manera de hacer para ya rizar el rizo Última edición por coso fecha: 21-06-2008 a las 16:44:00. |
#8
|
|||
|
|||
Bueno he seguido investigando y me he encontrado con un problema.
supongamos esto :
En todos los puntos donde le he pasado un argumento me da este error: Incompatible types: 'Procedure of object' and 'procedure, untyped pointer or untyped parameter' |
#9
|
|||
|
|||
Si, es normal. El array que tu tienes lo has creado para objetos tipo procedure a secas, en tu ultimo codigo estabas intentando meter procedures con argumento alla. Seria como meter un TBitmap en un array de TShapes, por ejemplo. Si lo que quieres es hacer un array con procedures que le mandas argumentos, o con funciones, deberas declararlo de otra manera
lo que se esta realmente guardando en el array es la direccion de memoria donde se encuentra cargada dicha funcion, su puntero o pointer. Para tener varios tipos de funciones (con varios tipos y numero de argumentos) lo mejor es crear un solo tipo con una cadena de argumento y luego parsearlos. Ten en cuenta que es trabajoso, al menos hacerlo la primera vez , por lo que quiza no te acabe a salir a cuenta. Te pongo un ejemplo
PD: en tu codigo, estas usando un array dinamico, esto es, sin indicarle la cantidad de elementos que tiene. No se si se le tiene que asignar o no memoria en este caso, pues es, a lo sumo, un array de enteros. A ver si alguien del foro lo aclara :/ Venga, saludos. Última edición por coso fecha: 21-06-2008 a las 18:36:50. |
#10
|
||||
|
||||
Hola David, disculpa que te pregunte: ¿Van a cambiar mucho esos procedimientos? ¿Puede que en algún momento se agreguen más? ¿Tienen algo en común?
No me convence mucho la idea de tener arrays de procedures. Yo más bien considero que puede ser más indicado emplear una fábrica o Factory. Posiblemente alguna Fabrica abstracta. Habría que estudiarle un poco la idea pero me parece más indicado y certero tener clases "Productos" y dejar que cada una asuma la responsabilidad de hacer su propio algoritmo. Y luego una Fábrica crea la/s clase/s Productos adecuadas. Si no se me entiende la idea, te recomiendo la lectura de estos temas: Wikipedia (Español) Fábrica (o Factoría) Abstracta Fábrica (o Factoría) About.com (Inglés) Factory Patterns Por el tema de que se pueda elegir más de una cosa por hacer... habría que ver de que manera hacerlo. Lo más simple es tener un FOR e ir creando y destruyendo los productos que se necesiten: for cantidad_de_productos hacer: Crear_producto(¿NombreProducto?) Producto.Hacer() LiberarProducto() No se si se entiende la idea. No se si estás puesto con el tema de clases y el uso de patrones. Pero al menos a mi me parece más adecuado el uso de una Fabrica que estar empleando esos arrays. Saludos, |
#11
|
|||
|
|||
No. Yo creo que lo mejor en tu caso son los arrays, incluso la solucion sencilla de fenareth o pcicom ya te sirven.
saludos. |
#12
|
||||
|
||||
Cita:
Si sólo van a existir pocos métodos a realizar el tener así puede ser viable. Mas bien yo ofrecí ese punto de vista por lo que estuve viendo a como se estaba llevando el hilo: funciones y procedimientos con o sin parámetros... muchos corchetes... Imaginate si en vez de esos 4 o 10 son 20. El código puede resultar un tanto ilegible y engorroso. ¿Y si hay métodos que comparten ciertas similitudes? ¿Y si luego es necesario ampliar las posibilidades? Y algo que por el momento no se contempla ¿Y si un proceso o actividad necesita obligadamente de una secuencia determinada? El uso de una fábrica puede facilitar muchas cosas. Por ejemplo, veo que en su ejemplo inicial menciona a CheckEntregas y CheckPedido. ¿Que diferencia a una de otra? ¿Se puede compartir algo en común y aligerar el código? Para situaciones en donde el código a lo largo del tiempo va a ser estable la manera en que ofrecen sus códigos puede resultar viable. Pero para situaciones en donde puede llegar a existir código redundante, o bastante similar, en donde no se prevee la cantidad la cantidad de opciones y "productos" a considerar considero que el uso de una Fábrica es más adecuado. No pretendo imponer mi idea. Mas lo digo para que David analice objetivamente su situación. Saludos, |
#13
|
|||
|
|||
Hola
No me sale, algo he hecho mal, pongo el código que tengo resumido
el error que me da es: Left side cannot assigned to, que la asignación no es correcta, pero como se asigna entonces. A ver si alguien me ayuda, porque ahora si estoy perdido. Saludos |
#14
|
|||
|
|||
saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Puede Delphi ejecutar procedures no compiladas | sysmar | Varios | 3 | 26-03-2008 17:13:02 |
Hacer un insert o un update en un campo array | David | Firebird e Interbase | 4 | 27-04-2007 19:14:13 |
Se puede hacer un multi FTP? | JuanErasmo | Internet | 4 | 08-11-2006 16:38:09 |
Se puede hacer esto ??????? | AMINOA2R | Firebird e Interbase | 2 | 21-10-2005 17:50:59 |
se puede hacer | armando | Conexión con bases de datos | 6 | 20-05-2004 05:12:26 |
|