Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

retornar array de enteros desde dll

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: retornar array de enteros desde dll Responder citando

Hola, que tal;

tengo una dll que cargo de forma dinámica la cual tiene una función que recibe dos vectores dinámicos y retorna un vector de enteros de longitud 32, esto lo e podido hacer con delphi, pero necesito implementarlo en c++ builder, entonces la cuestión es ¿como puedo hacerlo?

código utilizado en delphi:

Código:

  function MiFuncion (aVar1,aVar2: MiArrayDinamico): MiArrayDe32; stdcall external 'miDll.dll' index 1;


en donde MiArrayDinamico es un tipo de dato definido por mi lo que es un array dinámico de enteros y MiArrayDe32 es otro tipo de dato definido por mi por lo que es un array de enteros de longitud 32 el cual es lo que quiero que me retorne, gracias a todos de antemano
_________________
Dr. Kiro - Corp®
Toda la magia en solo dos numero... 1 0...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Si te apoyas en clases o estructuras para hacerlo, es fácil. Mira este ejemplo simple:

Código:

// Creamos el tipo de dato MyArray
struct MyArray32{
   int A[32];
   operator int*() {return A;}
   int &operator [](int i) {return A[i];}
};

MyArray32 MiFuncion(int* a, int* b)
{
  MyArray32 A;
  for(int i=0; i<32; i++) A[i] = i;  // un mero ejemplo de cargar el array...
  return A;
}



Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

@escafandra gracias por tu respuesta y si que es interesante tu solución, y permiteme decirte que recordando un poco de teoria y de turbo c++ un profesor me comento que en turbo c++ los vectores al pasarlos como parámetros estos siempre se pasan por referencia, entonces lo que hice fue cambiar mi funcion agregándole el vector que necesito modificar (y regresar) como un parametro mas

Código:

MiArrayDinamico aA,aB;
int MyArrayEstatico[32];
MiFuncion(aA,aB,MyArrayEstatico);


y ya en mi funcion lo trabajo como un vector normal

Código:
MyArrayEstatico[i] = 1;


Muchas gracias, saludos
_________________
Dr. Kiro - Corp®
Toda la magia en solo dos numero... 1 0...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Exacto, esa es la solución mas habitual y en la primera que pensé. Como tu pregunta iba encaminada a devolver un tipo específico creado por ti, opté por la solución más técnica de usar una estructura y ceñirme exactamente a tu pregunta.

drkirocorp escribió:
...un profesor me comento que en turbo c++ los vectores al pasarlos como parámetros estos siempre se pasan por referencia...


No es que los vectores se pasen por referencia sino que cuando pasas un array lo que realmente pasas es un puntero al primer elemento del array con lo que tu función tiene la dirección real del array original y no una copia. El resultado conceptual es la equivalencia al paso por referencia. Esto te sirve para cualquier variable. Si pasas su puntero es equivalente a un paso por referencia.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias, entendido...!
_________________
Dr. Kiro - Corp®
Toda la magia en solo dos numero... 1 0...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.