• Viernes 15 de Noviembre de 2024, 02:18

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Getovich

Páginas: [1]
1
C/C++ / Re: Quicksort...
« en: Jueves 12 de Agosto de 2004, 02:16 »
Podes usar la funcion qsort declarada en la libreria estandar de C incluyendo la cabecera "stdlib.h".

2
C/C++ / Re: Librerías
« en: Viernes 6 de Agosto de 2004, 17:26 »
he! no seas egoista, tu preguntaste de librerias yo te respondi sobre librerias, tene en cuenta que hay gente que le puede servir tanto un tema como otro englobado en el mismo titulo "Librerias", no pienses solo en tu pregunta, pero bueno, con respecto a la embarrada si tu me la puedes senalar con gusto respondere, lo que necesitas saber antes de programar es como funciona tu compilador, si lo supieses no me preguntarias "cual es la ventaja de usar una librería a usar simplemente la cabecera?" es como si yo te preguntara "cual es la ventaja de usar un disco rigido a usar simplemente el cable?", con respecto a tu deduccion "en el .h pongo como quien dice la delcaración de las funciones, y en el .lib pongo la función ya descrita sin delcarar, ahora, comoconvierto mi archivito a .lib correcto?" lo de la cabecera es correcto, pero veo que has fallado en la lectura de un simple codigo, como me vas a preguntar si pones la funcion sin declarar?, no te das cuenta que PRECISAMENTE LA CABECERA ES PARA DECLARAR LA FUNCION Y LA INCLUIS CON LA LINEA #include "micabecera.h", entonces el compilador cuando llegue a la linea numero 3 ya sabe que se declaro una funcion llamada Suma, porque antes paso por la linea 1 y leyo #include "micabecera.h" y en la linea 1 del archivo de cabecera leyo "int Suma(int,int);". yo te sugiero que antes de seguir adelante con lo que sea, leas un poco sobre la parte funcional del compilador, luego los conceptos basicos que debes saber antes de ponerte a programar una vez pulido todo eso comienzas a ver las optimizaciones de ejecucion, memoria, etc... creo que por ahora te daria algunas preguntas para que pongas en el foro "Que es un compilador?, Como funciona?, Que es una cabecera? Para que sirve? Que es una declaracion? y una asignacion? etc...

3
C/C++ / Re: Librerías
« en: Jueves 5 de Agosto de 2004, 16:34 »
hola, bueno de forma muy resumida te dare uno datos que se, hay dos tipos de librerias estan las de vinculo dinamico y las de vinculo estatico, *.dll y *.lib respectivamente, las primeras se cargan en memoria y pasan los puntos de entrada a la aplicacion (por ej la direccion de las funciones) para luego usarlas y las otras se compilan junto con la aplicacion (estan dentro del archivo *.exe), lo que logramos con las de vinculo dinamico es achicar el tamano del *.exe.

Para crear estas librerias debemos tener en cuenta el tipo por ejemplo:

para una libreria estatica, en el archivo de cabecera seria algo asi:

int Suma(int numero1, int numero2);

en el archivo de codigo:

#incude "micabecera.h"

int Suma(int numero1, int numero2)
{
         return numero1 + numero2;
}

para usarla debemos incluir tanto la cabecera como la libreria compilada y linkada a nuestra aplicacion.

#include "micabecera.h"

main()
{
      int a;
      int b;

    a=12;
    b=15;

   printf("%d",Suma(a,B));

}


para las de vinculo dinamico es un poco mas extenso, son para win32 y tendremos que conocer bien las razones de su llamada pero bueno vamos a ver las diferencias

en la cabecera seria:
/*si usamos dllimport/export nos evitamos tener que adjuntar un archivo de exportacion que en este caso seria algo asi
EXPORTS
Suma @01 donde asignamos un numero ordinal a la funcion
*/

#ifdef SUMA_NUMEROS_EXPORTS
#define SUMA_NUMEROS __declspec(dllexport)
#else
#define SUMA_NUMEROS __declspec(dllimport)
#endif

SUMA_NUMEROS int Suma(int numero1, int numero2);

en el archivo cpp seria muy diferente a la estatica ya que contamos con una funcion DllMain (win32)

#include "micabecera.h"

BOOL APIENTRY DllMain( HANDLE hmo,
                       DWORD  motivo_del_llamado,
                       LPVOID reservado
                )
{
    switch (motivo_del_llamado)
{
          case DLL_PROCESS_ATTACH:
         case DLL_THREAD_ATTACH:
           case DLL_THREAD_DETACH:
           case DLL_PROCESS_DETACH:
      break;
  }
    return TRUE;
}

//luego la funcion suma
SUMA_NUMEROS int Suma(int numero1, int numero2)
{
   return numero1 + numero2;
}

para usarla tambien se nos complica un poco, al tener que llamar a dos funciones una para cargarla (LoadLibrary) y otra para traer el puntero de la funcion (GetProcAddress).

en una aplicacion simple seria algo si:

#include <windows.h>
typedef int (CALLBACK* DLLSUMA)(int,int);// prototipo

int APIENTRY WinMain(HINSTANCE hin, HINSTANCE hpin, LPSRT com, int show)
{

HINSTANCE midll;
DLLSUMA el_puntero_a_suma;
int numero1;
int numero2:
int Resulatado;

midll = LoadLibrary("suma.dll");
if (midll != NULL)
{

el_puntero_a_suma = (DLLSUMA)GetProcAddress(midll, "Suma");

 if (!el_puntero_a_suma) //comprobamos si encontro el punto de entrada
   {
      FreeLibrary(midll);      
      return NULL;
   }

else //una vez encontrado usamos la funcion
   {

      //llamamos a la funcion
      Resultado = el_puntero_a_suma(numero1, numero2);
   }

}


bueno espero que te sirva de guia para poder crear tus propias librerias, fijate si podes conseguir algunos apuntes sobre el tema, es muy interesante y beneficioso para modular aplicaciones y reutilizar codigo.
Si se me fue algun detalle por ahi no duden en corregirme asi aprendemos todos.
salu2.

4
C/C++ / Re: Se Puede Guardar Datos Desde Turbo C A Excel?
« en: Jueves 5 de Agosto de 2004, 01:00 »
hola como te va, encontre algo que quizas te pueda ayudar a resolver tu problema espero que te sirva de algo. salu2

5
C/C++ / Re: Como Puedo Linkar Una Base De Datos Access?
« en: Martes 3 de Agosto de 2004, 14:56 »
Gracias por tu respuesta, baje ese codigo de la pagina del msdn, es una buena alternativa, gracias de todas formas, lo hice con creando un DSN con el driver de Microsoft Access, usando las librerias por defecto de win32 para la conexion ODBC (odbc32.lib) Tema en ayuda>Calling ODBC API Functions Directly.

6
C/C++ / Re: Usar Base Datos (*.mdb) Con C++
« en: Viernes 18 de Junio de 2004, 22:29 »
bueno gracias al menos tuve una respuesta despues de todo. creo que la solucion es encontrar una libreria echa para el lenguaje C y que tenga en la cabezera las funciones (sin clases) correspondientes para manejar la tabla.

7
C/C++ / Usar Base Datos (*.mdb) Con C++
« en: Domingo 13 de Junio de 2004, 00:40 »
Necesito saber como usar el motor de base de datos de Access directamente desde C++, pero sin utilizar MFC.
Se trata de una aplicacion escrita en C++ usando las lamadas de API. Se que con MFC se puede heredar la clase CDaoDatabase para Access.
No es que sea caprichoso, se trata de un trabajo para la universidad, que apunta a programar en el lenguaje C++ para windows usando SDK. estoy trabado en esto y no puedo seguir adelante, si alguien sabe como hacerlo por favor, se lo voy a agradecer.

8
C/C++ / Como Puedo Linkar Una Base De Datos Access?
« en: Lunes 7 de Junio de 2004, 16:54 »
hola ante todo saludos para todos los del foro, bueno mi problema es que tengo que usar una base de datos access (*.mdb) y no se como lograr una conexion desde c++, tengo el compilador visual c++ pero no quiero usar MFC la aplicacion es win32 api calls, como puedo hacer? si tienen algun ejemplo pequeño para ver las decaraciones y las cabeceras y que libreria usa. gracias por su ayuda si necesitan mas detalles pregunten.

Páginas: [1]