FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Pasar array como parámetro
Buenas, tengo la siguiente definición:
Ahora, hasta aquí todo bien pero resulta que quiero llamar al procedimiento de la siguiente forma y no me deja:
Se que de la manera tradicional puede hacerse pero necesitaría que el pasaje fuera de la manera que indico pues evitaría que yo inicializara el array dinámico, que armara uno por uno los registros y todo eso. Creo que estoy haciendo algo mal por eso no me deja hacer el pasaje de esa manera. Pido que alguien me corrija o brinde alguna sugerencia. Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#3
|
||||
|
||||
Array
Cita:
Para citar un ejemplo aún mas claro, si hago lo siguiente no hay problemas:
Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. Última edición por santiago14 fecha: 17-09-2008 a las 02:13:31. Razón: Errores de ortografía |
#4
|
||||
|
||||
array
Para ser mas gráfico, estoy ante un problema que se llama "Parámetros de vector abierto (Open Array)"
Espero que alguien tenga una idea de como arreglar la cosa. Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#5
|
||||
|
||||
Hola santiago14,
La verdad es que no te sabría decir si es posible hacer lo que buscas. Una posible alternativa es que el procedimiento reciba dos vectores dinámicos. Se que no es demasiado elegante, pero es una opción. La otra alternativa que se me ocurre es un tanto mas complicada y tal vez sea demasiado para tus propósitos: en vez de tener un record, implementar una clase TDatos que tenga los mismos campos. Después tener un TObjectList que hará de vector. De este modo el procedimiento puede recibir a un objeto TObjectList y recorrer todos los objetos TDatos que estén dentro de éste. El asunto es que este enfoque obliga a crear cada objeto TDato y llenarlo por separado, y relacionarlo con el TObjectList. Por esto digo que tal vez esta opción sea más complicada que tener dos vectores. Saludos, |
#6
|
||||
|
||||
Hola Santiago14, creo que así directamente no se puede, la forma que se me ocurre es inicializar como una constante de esta forma:
la otra forma es darle tu los valores correspondientes a cada atributo de tu registro, para luego pasar ese array como parametro.
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#7
|
||||
|
||||
agradecimentos
Quiero agradecerles a todos que a esta hora de la noche se han tomado la molestia de buscar una solución a todo esto.
Hasta ahora no he tenido buenos resultados; espero encontrar la respuesta en el corto plazo. Agradecido nuevamente les deseo buenas noches. Por supuesto que voy a considerar todas las respuestas y veo si haciendo un merengue entre todas puedo llegar a algo. Por favor, si tienen nuevas sugerencias no duden en ponerlas.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#8
|
||||
|
||||
Yo tengo esto funcionando en Delphi 6 desde hace mucho tiempo:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#9
|
|||
|
|||
Hola, es normal q te salte error puesto q no le estas pasando un array de TDatos, sino un array de enteros. Puedes hacer varias cosas (para mantener el formato de pares de numeros...).
1.- hacer overload de 'proceso' : mientras que en una acepte array de tdatos, en la otra acepte array de [0..1] real (pares de numeros), llamando, luego de transformar los parametros, una a la otra, segun te convenga. 2.- Crear una clase cuyo constructor acepte pares de numeros, tendras que llamar a proceso entonces de la manera proceso([TDatos(0,1),TDatos(20,3)]) etc... 3.- Crear una funcion que, a partir de pares de numeros, te devuelva un array de tdatos. Algo parecido a Rect()... te quedaria como proceso(A_Datos([(0,1),(20,80),(30,20)])); 4.- Crear una clase TDatos con un array [0..1] of double, y dentro ella crear dos propiedades, temperatura y humedad, con su read/write, los cuales devolverian v[0] i v[1]; 5.- Que proceso solo acepte array de array[0..1] of double, y que TDatos sea eso (type TDatos : array [0..1] of double), sabiendo tu ya q el primer valor es temperatura y el segundo humedad. ... y alguna q otra manera mas hay, seguro... Para mi la mejor de todas seria la primera (la menos laboriosa y visualmente mas entendible, una vez escrita) si bien segun para q lo quieras (si tiene q desarrollarse bastante) quizas te salga mas a cuenta crear una clase correctamente (la opcion 4). Creo q en c del antiguo si se podia tratar una struct (record) asi tal como escribes, colocandose cada valor en su sitio. Me parece q la OOP anulo esto , pues son necesarios los typecast para casi todo. Igualmente, no estoy seguro, investigo un poco. Saludos y a ver si te sirve lo escrito. Última edición por coso fecha: 17-09-2008 a las 13:11:50. |
#10
|
|||
|
|||
otra...esta es analoga a como trabaja TPoint. Última edición por coso fecha: 17-09-2008 a las 13:28:33. |
#11
|
||||
|
||||
Muy bueno
Cita:
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como pasar un parametro? | b3nshi | Varios | 3 | 18-08-2007 06:54:53 |
Pasar SQL como parametro | veloki | Impresión | 7 | 16-04-2007 15:28:37 |
PLSQL - Pasar un array como parametro. | movorack | SQL | 1 | 06-03-2007 20:07:59 |
pasar como parámetro un array bidimensional | nsr048 | Varios | 2 | 08-11-2005 11:54:20 |
Pasar como parametro el where en una funcion | cso2000 | MS SQL Server | 2 | 15-02-2005 02:49:47 |
|