Delphi - Array dinamico como parametro de una función

 
Vista:

Array dinamico como parametro de una función

Publicado por kikecg (33 intervenciones) el 07/11/2005 13:15:22
Hola a tod@s.
Me encuentro con el siguiente problema: He definido una serie de arrays dinamicos de una misma estructura

var
OpGiros, OpCambios, OpOrden: array of TRegistroRepOperaciones;

Necesito pasar esos arrays a diferentes funciones para que sean procesados en ellas y me sean devueltos con una cantidad de registros x.

La definición de una de las funciones es:

function DevuelveOperacionesGiros(BaseDatos: TIBDataBase; vFechaIni, vFechaFin: TDateTime;
vLista: TStringList; vTodos: Boolean; var dGiros: array of TRegistroRepOperaciones; var Error: TEstructuraError): Boolean;

Al utilizar el array dentro de la función, por ejemplo:

SetLength(dGiros, Length(dGiros) + 1);

obtengo un error de incompatibilidad de tipos. He probado a crear un array temporal del mismo tipo dentro de la función, y si me deja trabajar con el, pero en el momento de asignar al array original el contenido del temporal

dGiros := Temp;

obtengo el mismo error, esta vez especificando

Incompatible types: 'Array' and 'dynamic array'

¿Significa que no se pueden pasar arrays dinamicos como parámetros o que no estoy definiendo bien dicho parámetro?.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Array dinamico como parametro de una función

Publicado por M@rceloL (213 intervenciones) el 08/11/2005 00:00:33
Hmm... Ahora no recuredo bien, pero creo que había alguna cosa con los arreglos dinámicos en parámetros... En la ayuda decía... pero andá a encontrarlo... creo que era entrando por "array", después "see also" y "open arrays" o similar. Perdón, pero no tengo Delphi acá así que no puedo probar...

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Array dinamico como parametro de una función

Publicado por kikecg (33 intervenciones) el 08/11/2005 09:12:28
Hola.
Ayer lo encontré finalmente. La forma de hacerlo es crear un tipo de datos y utilizarlo como parametro en lugar del array. Es decir, siguiendo el ejemplo de ayer:

type
TTipoRegOperaciones = array of TRegistroRepOperaciones;

function NombreFuncion(BaseDatos: TIBDataBase; var dOrdenes: TTipoRegOperaciones; RESTO_DE_PARAMETROS...): Boolean;

Y para utilizarla:

var
OpOrden: TTipoRegOperaciones;

Con esto se puede utilizar el array dinámico dentro de la función, devolviendo todos los datos correctamente. Después se accede a los campos del array de la misma manera que se haría con el array, directamente:

OpOrden[i].Campo1, OpOrden[High(OpOrden)].CampoN, etc...

Gracias M@rceloL por la colaboración, de todas formas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Array dinamico como parametro de una función

Publicado por Antonio Navarro (1 intervención) el 21/05/2015 22:12:29
Gracias, me sirvió de mucho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar