Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-11-2007
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 22
Sick boy Va por buen camino
Pasar Arrays dinamicos a una DLL

Hola,

Debo trabajar con una DLL que tiene una funcion que recibe como parametro un array sin tamaño fijo.

La idea es que a la funcion se le pasa por parametro un array, y te lo devuelve con un numero indeterminado de datos.

La dll creo que esta hecha en visual basic, donde este tipo de array es sencillo de manejar.

Esta es la definicion de la funcion:
function fReportSMSSent(const sDateFrom: WideString; const sDateUntil: WideString;
var aMobiles: OleVariant; var aMessage: OleVariant;
var aDeliveryDate: OleVariant; var aSender: OleVariant): Smallint;

No encuentro la forma de pasar en ese OleVariant un array sin dimension definida.

He probado a pasar la variable como OleVariant, sin más, pero también me devuelve un error la DLL (Parametros de entrada incorrectos).

Conoceis alguna forma de trabajar con este tipo de funciones.

Saludos
Responder Con Cita
  #2  
Antiguo 03-11-2007
MON___ MON___ is offline
Miembro
 
Registrado: abr 2007
Ubicación: Salamanca (España)
Posts: 84
Poder: 18
MON___ Va por buen camino
¿Seguro que la DLL está hecha con Visual Basic??????
Responder Con Cita
  #3  
Antiguo 03-11-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

¿Podrías decirnos de donde tomaste esa definición (cabecera) de función? Para ser de una DLL, me parece extraño que no lleve ninguna directiva de tipo de llamada (como "StdCall", "Pascal", etc.), aunque estrictamente no son necesarias.

Pero por otro lado no me da mucha confianza una función que declara parámetros de tipo cadena para valores que aparentemente indicarán fechas (en todo caso el autor pudo haber declarado tales parámetros con el mismo tipo de dato que los demás, OLEVariant).

Una pregunta Sick: ¿qué dice la documentación acerca de esa función? ¿Podrías mostrarnos el código de cómo la llamas y el mensaje de error exacto que te aparece?

Gracias.

Al González.

P.D. Me faltó mencionar que con la función VarArrayOf puedes enviar una serie de valores como arreglo Variant / OLEVariant. Saludos.

Última edición por Al González fecha: 03-11-2007 a las 21:25:46.
Responder Con Cita
  #4  
Antiguo 05-11-2007
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 22
Sick boy Va por buen camino
Gracias por vuestras respuestas.

Esta es la documentación de la función:
Cita:
fPendingSMS (función)

aBatchID Array Parámetro de salida. Matriz de 1 dimensión.
Rango del Array: inicialmente vacío, devolviendo n – 1 valores
Cada elemento del Array contendrá una cadena de caracteres numéricos con el identificador asociado a un envío pendiente.

aMobiles Array Parámetro de salida. Matriz de 1 dimensión.
Rango del Array: inicialmente vacío, devolviendo n – 1 valores
Cada elemento del Array contendrá una cadena de caracteres con todos los teléfonos móviles asociados a un envío pendiente.
Los números de teléfono irán separados por punto y coma ‘;’

aMessage Array Parámetro de salida. Matriz de 1 dimensión.
Rango del Array: inicialmente vacío, devolviendo n – 1 valores
Cada elemento del Array contendrá una cadena de caracteres con el mensaje de texto asociado a un envío pendiente.

aDeliveryDate Array Parámetro de salida. Matriz de 1 dimensión.
Rango del Array: inicialmente vacío, devolviendo n – 1 valores
Cada elemento del Array contendrá una cadena de caracteres con la fecha asociada a un envío pendiente.
Formato: yyyymmddhhmmss

aSender Array Parámetro de salida. Matriz de 1 dimensión.
Rango del Array: inicialmente vacío, devolviendo n – 1 valores
Cada elemento del Array contendrá una cadena de caracteres alfanuméricos con el remitente asociado a un envío pendiente.

Tipo devuelto:
Integer En caso de éxito de la petición, el valor devuelto será 0.
Para cualquier otro valor entero positivo, consultar códigos de error.

Código error:
500 Parámetros de entrada incorrectos.
520 Error no especificado.

El código de error 500 engloba errores encontrados que pueden implicar desde no declarar los parámetros de entrada como Array hasta también que éstos sean de tamaño fijo y por tanto no modificables por la función internamente.
El error que obtengo es el error 500, y entiendo que sea por los array.
Creo que esto es el problema:
"aMobiles Array Parámetro de salida. Matriz de 1 dimensión.
Rango del Array: inicialmente vacío, devolviendo n – 1 valores"

El parametro de salida es un array inicialmente vacio, pero no se como pasarle ese parametro.

Muchas gracias
Responder Con Cita
  #5  
Antiguo 05-11-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
has intentado pasarle el array como OleVariant?
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #6  
Antiguo 07-11-2007
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 22
Sick boy Va por buen camino
Cita:
has intentado pasarle el array como OleVariant?
Si, claro fue lo primero que intenté, y no funcionó.

Tambien he probado a pasarle un array con el numero exacto de elementos que deberia devolver y no funciona.

Y he probado a pasar un array dinamico sin definir el tamaño y tampoco va.

NOTA: Definitivamente, la libreria esta hecha con visual basic
Responder Con Cita
  #7  
Antiguo 09-11-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
Haz usado PSafeArray?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
arrays dinamicos Chompiras Varios 8 14-07-2015 22:49:51
Arrays dinamicos Besto Varios 4 13-10-2006 15:24:01
Arrays dinámicos en memoria eliash OOP 5 01-02-2006 11:03:26
Arrays dinámicos con Delphi.NET mamen .NET 0 25-11-2004 14:21:35
Arrays Dinamicos mauro Varios 4 05-07-2003 21:14:29


La franja horaria es GMT +2. Ahora son las 12:13:19.


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
Copyright 1996-2007 Club Delphi