• Miércoles 16 de Julio de 2025, 15:25

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 - Karman

Páginas: 1 [2] 3 4
26
C/C++ / Re: Console.lib
« en: Sábado 1 de Septiembre de 2007, 04:44 »
La verdad nunca escuché de dichas librerías... que SO usas?

27
C/C++ / Para Eliminar
« en: Sábado 1 de Septiembre de 2007, 04:20 »
[Editado]

S2

28
C/C++ / Re: Manejo Usb????
« en: Sábado 25 de Agosto de 2007, 21:00 »
fijate esta función, la creé en base a la documentación en el MSDN(solo funciona con XP, esa es su gran limitación):

Código: Text
  1.  
  2. WORD GetDevicesNumber(const GUID* DeviceGUID,PDEVICES device){  
  3.   HDEVINFO hdev;
  4.   SP_DEVICE_INTERFACE_DATA did;
  5.   PSP_DEVICE_INTERFACE_DETAIL_DATA pdidd;
  6.   DWORD cbRequired,idev;    hdev=SetupDiGetClassDevs(DeviceGUID,0,0,DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
  7.   if (hdev != INVALID_HANDLE_VALUE) {  
  8.     did.cbSize = sizeof(did);
  9.     for(idev=0;idev < 100; idev++) {
  10.       SetLastError(ERROR_NO_MORE_ITEMS);
  11.       if(SetupDiEnumDeviceInterfaces(hdev, 0, DeviceGUID, idev, &did)) {      
  12.         if(device!=NULL){
  13.           cbRequired = 0;
  14.           if(SetupDiGetDeviceInterfaceDetail(hdev, &did, 0, 0, &cbRequired, 0)||GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
  15.             pdidd = (PSP_DEVICE_INTERFACE_DETAIL_DATA)LocalAlloc(LPTR, cbRequired);
  16.             if (pdidd) {
  17.               pdidd->cbSize = sizeof(*pdidd);
  18.               if(SetupDiGetDeviceInterfaceDetail(hdev, &did, pdidd, cbRequired, &cbRequired, 0)) {
  19.                 strcpy(device[idev].DevicePath,pdidd->DevicePath);
  20.               }
  21.               LocalFree(pdidd);
  22.             }          
  23.           }
  24.         }
  25.       }else {
  26.         if(GetLastError() == ERROR_NO_MORE_ITEMS)
  27.           break;
  28.       }
  29.     }
  30.     SetupDiDestroyDeviceInfoList(hdev);
  31.   }  
  32.   return idev;
  33. }
  34.  

donde:
const GUID* DeviceGUID es el guid del tipo de dispositivo a detallar (el mismo que utilizabas anteriormente)
y PDEVICES es un puntero a la siguiente estructura:

Código: Text
  1.  
  2. typedef struct _DEVS_{
  3.   DISK_GEOMETRY Geometry;
  4.   LARGE_INTEGER DriveSize;
  5.   LARGE_INTEGER BufferSize;
  6.   char Model[64];
  7.   char Revision[64];
  8.   char Serial[64];
  9.   char DevicePath[MAX_PATH];
  10.   char DeviceName[32];
  11. }DEVICES,*PDEVICES;
  12.  
  13.  

Saludos

29
C/C++ / Re: Proyecto De Gui Class Xg(extreme Graphics)
« en: Martes 21 de Agosto de 2007, 21:52 »
Citar
No, no es de pago y lo maximo es que el codigo fuente esta incluido con el Visual Studio 2005 en la carpeta VC\atlmfc\src\mfc. Incluso hay un .mak para generar tanto ATL como MFC en x86, AMD64 y IA64 (incluso una MFC estatica - .LIB -). ¿Eso si es gracioso, no?

PD. Bajo ningun concepto estoy diciendo que la MFC sea Open Source, ni siquiera se si podes redistribuir los binarios generados.

Me quedó una duda... las MFC no son pagas... eso lo entendí... pero poder usarlas necesitás Visual Studio (que tenes que pagarlo)... entonces... por propiedad transitiva no sería como que las MFC son pagas? (indirectamente, obvio)

Saludos

30
C/C++ / Re: Problema Con Programa "fallo En Vector"
« en: Martes 21 de Agosto de 2007, 21:47 »
Citar
Lo que yo dije fue esto: En realidad esa costumbre es perjudicial a la larga, lo ideal es usar un depurador en tiempo de ejecucion. No creo ser capaz de cuantificar el beneficio que se obtiene con esta practica.

Primero que aprenda a programar... después a debugear... sinó pasa lo que mensionó "Karkayu", que esperan que se aprenda todo de golpe...

Citar
Ese argumento es muy facil de rebatir: millones de moscas comen mierda. Por otro lado que yo recuerde en la filtracion de Windows NT 4.0 y 2000 no habia una sola linea que correspondiera al Kernel.

Si para vos eso es comer mierda... no digo más nada... :hola: ... además... yo no dije nada de Kernel... o si?... jo

Saludos

PD: tratá de no ser tan soberbio... let it be...

31
C/C++ / Re: Proyecto De Gui Class Xg(extreme Graphics)
« en: Martes 21 de Agosto de 2007, 20:10 »
Citar
eso no implica que sea pago, hasta donde se hay versiones gratuitas del compilador y visual studio.
no es lo mismo que libre, pero si son gratis

La versión Libre de Visual Studio (por lo menos la que yo bajé de Microsoft) que si no me equivoco se llama "Express", no incluye las MFC, por eso pregunto... si se puede descargar de algún lado estaría bueno...

Saludos

32
C/C++ / Re: Problema Con Programa "fallo En Vector"
« en: Martes 21 de Agosto de 2007, 20:06 »
Naa... es obvio que no se soluciona con eso...  :smartass: , pero se puede ver hasta donde va corriendo bien el ejecutable...  :lol:

Además... no sé que tan complicados sean tus proyectos... pero hasta hora en los que he trabajado... recompilar no toma más de 30 segundos... es más... el error que le acabo de encontrar al código posteado lo hice así en 2 minutos... debugueando no sé si será tan rápido...

Con vos lo que pasa es que no te podes bajar de tu nivel de programador "experto", pero para el que posteó el código originalmente (que se nota a leguas que está comenzando a programar) le es más práctico lo de los mensajesitos que lo del debug...

Sin ir más lejos... (quizás sea un error comun... je) pero muchos de los códigos que andan dando vuelta en la red utilzan este método para debuguear (incluso hasta el código fuente de Win 2000)

Saludos

33
C/C++ / Re: Proyecto De Gui Class Xg(extreme Graphics)
« en: Martes 21 de Agosto de 2007, 18:22 »
No es de pago la MFC? huuu espectacular... donde puedo descargarla para usarla en compiladores no Microsoft como GCC???

Y lo de publicarlo acá no fué para que bajen el código... sinó para ver que opinan de la idea...

Saludos

34
C/C++ / Re: Problema Con Programa "fallo En Vector"
« en: Martes 21 de Agosto de 2007, 18:14 »
Estube revisando tu código... y tu error está al definir la estructura TEmpleado porque definís dni[9] y almacenás un número de 9 dígitos, osea... te falta el caracter de fin de linea, entonces al correr tu programa al principio guardás la dirección correctamente, y al guardar el DNI el caracter de fin de linea se escribe en la variable direccion[80], por eso funciona bien hasta que actualizás donde almacenás algo en dicha variable borrando el carater de fin de linea.

Con respecto al tema del FOR o el WHILE, es indiferente su uso... en ambos casos se pueden definir sentencias de fin (condiciones boleanas, break, continue) el tema es saber utilizar estas sentencias, y con respecto al tema de la depuración, personalmente estoy a favor de los mensajitos antes que un programa de debug, no por un tema de desconocimiento, sinó por practicidad, es más... para mi no representa una pérdida de tiempo colocar pequeñas sentencias de printf o messagebox cada cuanto para ver el comportamiento del programa, sobre todo cuando aparecen fallas muy descolocadas o por errores en el compilador... aunque aveces una mezcla de ambos es muy productivo... como debuger suelo utilizar el win32 dassembler, que es liviano y bastante facil de usar...

Saludos

35
C/C++ / Para Eliminar
« en: Jueves 2 de Agosto de 2007, 22:20 »
[Editado]

S2

36
C/C++ / Re: Duda Al Pintar Texto En Consola
« en: Jueves 2 de Agosto de 2007, 02:43 »
Ese tipo de errores suele ser común, ya que en realidad el pintado de un area debe realizarce al resivir el mensaje del sistema WM_PAINT, de todas formas logré que funcione el código de la siguiente manera:

Código: Text
  1.  
  2. ///////////////////////////////////
  3. //compile as console mode app
  4. #include <windows.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8.  
  9. int main(void){
  10.  
  11.   HWND h;
  12.   HDC hdc;
  13.   SetLastError(0);
  14.  
  15.   char s[]="Texto"; // texto que quiero pintar de rojo
  16.   h = FindWindow("ConsoleWindowClass", NULL);  // obtengo el handle
  17.   hdc=GetDC(h); // obtengo el handle del contexto
  18.  
  19.   SetTextColor(hdc,0xff00FF); // defino el color rojo..
  20.   TextOut(hdc, 30, 25, s, lstrlen(s)); // intento pintarlo en el area cliente de la ventana
  21.   ValidateRect(h,NULL);
  22.   system("pause");
  23. }
  24.  
  25.  

con ValidateRect(h,NULL) excluís una parte (o toda como en este caso) de la pantalla de la próxima "pintada" de windows...

S2

37
C/C++ / Re: Ayuuuuuda C++ ... Por Favor
« en: Miércoles 1 de Agosto de 2007, 22:26 »
Mirá... básicamente existen dos formas de importar funciones de una DLL en c++, la primera (y más orientada a objetos), exportando la clase; la segunda (y más orientada a su uso en general pudiendo ser usada en C) mediante Wrapper (algo así como sobreescritura), y ahora que lo pienso tendría que hacer un artículo sobre esto tb... je... volviendo al tema, como yo te decía era de la segunda forma, pero supongo que vos necesitas orientada a objetos pura, entonces el método es el siguiente:

Código DLL:
dll.h:
Código: Text
  1.  
  2. #ifndef _DLL_H_
  3. #define _DLL_H_
  4.  
  5. #define DLLExport   __declspec (dllexport)
  6.  
  7. class DLLExport DllClass{
  8.   public:
  9.     DllClass();
  10.     virtual ~DllClass(void);
  11.     void Hello(void);
  12.   private:
  13. };
  14.  
  15. #endif /* _DLL_H_ */
  16.  
  17.  

dll.cpp:

Código: Text
  1.  
  2. #include <windows.h>
  3. #include "dll.h"
  4.  
  5. void DllClass::Hello(){
  6.   MessageBox(0,"hola","holaa",0);
  7. }
  8.  
  9. DllClass::DllClass(){}
  10. DllClass::~DllClass (){}
  11.  
  12. BOOL APIENTRY DllMain (HINSTANCE hInst,DWORD reason,LPVOID reserved){
  13.   switch (reason){
  14.      case DLL_PROCESS_ATTACH:
  15.      break;
  16.   }
  17.   return TRUE;
  18. }
  19.  
  20.  

Código Programa:
main.h:
Código: Text
  1.  
  2. #ifndef _DLL_H_
  3. #define _DLL_H_
  4.  
  5. #define DllImport __declspec (dllimport)
  6.  
  7. class DllImport DllClass{
  8.   public:
  9.     DllClass();
  10.     virtual ~DllClass(void);
  11.     void Hello(void);
  12.   private:
  13. };
  14.  
  15. #endif /* _DLL_H_ */
  16.  
  17.  

main.cpp:
Código: Text
  1.  
  2. #include <windows.h>
  3. #include <cstdlib>
  4. #include "main.h"
  5.  
  6. DllClass dllclass;
  7.  
  8. int main(int argc, char *argv[]){
  9.   dllclass.Hello();
  10.   system("PAUSE");
  11.   return EXIT_SUCCESS;
  12. }
  13.  
  14.  

el otro método se diferencia porque se definen wrappers o dicho de otra manera, se sobreescriben las funciones:

Código: Text
  1.  
  2. void *CrearObj(void){
  3.    DllClass *tmp;
  4.    tmp=new DllClass;
  5.    return (void *)tmp;
  6. }
  7.  
  8. void EliminarObj(void *obj){
  9.    DllClass *tmp;
  10.    tmp=(DllClass *)obj;
  11.    delete tmp;
  12. }
  13.  
  14. void Hello(void *obj){
  15.    DllClass *tmp;
  16.    tmp=(DllClass *)obj;
  17.    tmp->Hello();
  18. }
  19.  
  20.  

y así suscesivamente...

S2

38
C/C++ / Re: Ayuuuuuda C++ ... Por Favor
« en: Lunes 30 de Julio de 2007, 00:27 »
No importa que el compilador te cree un fichero .def, no tiene nada que ver... fijate acá:

Vinculando Librerías

S2

39
C/C++ / Re: Ayuuuuuda C++ ... Por Favor
« en: Jueves 26 de Julio de 2007, 15:03 »
tenes que exportarlas con listas ".def", no con __declspec (dllexport), te quedaría algo así:

"mydlldef.def":

    LIBRARY MYDLL //Nombre de nuestra DLL
    DESCRIPTION 'Librería de ejemplo'

    EXPORTS //Funciones Exportadas
        myFunction @ 1
        myFunction2 @ 2
        myFunction3 @ 3

Cualquier cosa fijate en mi web en la parte de vinculación de librerías

S2

40
C/C++ / Re: Ruta De Una Archivo
« en: Miércoles 4 de Julio de 2007, 15:08 »
con este conjunto de funciones podes recorrer un directorio:

Código: Text
  1.  
  2. char dir[]="c:\\";
  3. struct dirent *pfile;DIR *opdir;
  4. struct stat ptarch;
  5.  
  6. if((opdir=opendir(dir))==NULL){
  7.   printf("Acceso Denegado a %s\n",orig);
  8.   return -1;
  9. }
  10.  
  11. if((pfile=readdir(opdir))!=NULL){
  12.   do{
  13.      if((strcmp(pfile->d_name, "."))&&(strcmp(pfile->d_name,".."))){  
  14.   stat(opath,&ptarch);
  15.   if(S_ISDIR(ptarch.st_mode)){
  16.            //listar directorios
  17.         }else {
  18.            //listar archivos...
  19.         }
  20.      }
  21.   }while((pfile=readdir(opdir))!=NULL );
  22. }
  23.  
  24.  

S2

41
C/C++ / Re: Ruta De Una Archivo
« en: Miércoles 4 de Julio de 2007, 05:25 »
char *ruta;

es un puntero (apunta a un string), es obvio que no podes almacenar una dirección ahí... para hacerlo (mediante punteros) tendrías que reservar memoria... pero es algo complicado... así que te doy la respuesta corta:

char ruta[MAX_PATH];
gets(ruta);

S2

42
C/C++ / Re: No Entiendo Librerias Dinámicas
« en: Viernes 29 de Junio de 2007, 05:03 »
para editar una librería o un ejecutable (sin tener el código fuente) deberías usar un disassembler (te recomiendo el W32DASM) pero la edición que podrás hacer es remplazante (no podés agregar ni quitar sentencias... solo reemplazarlas), fuera de eso... si lo que quieres es modificar los diálogos, imágenes, textos y otras cosas (recursos) podes usar el ResHacker o una versión más profesional (pero freeware) el PE Explorer...

S2

43
C/C++ / Re: Libreria Conio.h Y Graphics.h
« en: Viernes 29 de Junio de 2007, 04:57 »
les resumo la historia de la librería "conio.h", básicamente al no ser una librería standart muchos de sus métodos no están contemplados del todo por por los compiladores que no sean Borland, y en lo que se refiere al S.O. no existen todas las funciones definidas en conio.h en la DLL base de C que es: "msvcrt.dll" que es la que incluye las implementaciones de la mayoría de las funciones estándares de C, es por este motivo que existe una "emulación" de la librería "conio.h" que incluye las funciones no incluidas en la cabecera "conio.h" que trae el compilador por defecto, esta segunda librería incluye un archivo "conio.c", que trae las implementaciones de dichas funciones con las APIS de consola de Windows... es más... en mi sitio posteé esta librería con compatibilidad para DevCpp y Visual C, cualquier cosa fijence...

ah... y otro tema... cuando te hablo de incluir "conio.c" no hablo de incluirlo con un #include, sinó como un archivo del proyecto, básicamente sería así:

en el código fuente:
#include "conio.h"

y en el proyecto (en la barra de menús del devcpp):
Proyecto->Añadir a Proyecto->"conio.c"

S2

44
C/C++ / Re: Tablas
« en: Sábado 16 de Junio de 2007, 19:09 »
jo... se me hizo que eras el que la posteó...  :whistling:

S2

45
C/C++ / Re: Tablas
« en: Sábado 16 de Junio de 2007, 18:08 »
pero te estás respondiendo solo... eso es lo que no se entiende... qué queres hacer? preguntas como hacer algo y abajo pones la respuesta... no tiene mucho sentido...

S2

46
C/C++ / Re: Sentencia Vacía O Nula
« en: Sábado 16 de Junio de 2007, 18:04 »
una sentencia vacía es cuando se llama a alguna de las sentencias del lenguaje sin definir una acción, osea... se la termina con ; sin especificar nada:

int i=10000;
while((i--)>0); //no hace nada pero provoca una pausa...

o por ejemplo:

char *p="una cadena de texto";
for (n=0;*(p++)!='\0';n++); // enunciado vacío que cuenta la cantidad de caracteres del string...

S2

47
C/C++ / Re: Tablas
« en: Sábado 16 de Junio de 2007, 17:51 »
la verdad no se entiende lo que querés decir ni lo que queres hacer... tratá de explicarte mejor...

S2

48
C/C++ / Re: Pequeña Consulta Sobre El Scanf.
« en: Lunes 4 de Junio de 2007, 14:49 »
Si trabajas sobre la consola de windows, aunque getch no es estándart igual viene implementada por Windows en la librería MSVCRT.DLL, la cual como ya expliqué alguna vez, contiene todas las implementaciones de las funciones estándares de C y algunas otras más como ésta justamente... para poder usar getch solo debes o incluir la librería conio.h o incluir esta línea:

Código: Text
  1.  
  2. #ifdef  __cplusplus
  3. extern "C" {
  4. #endif
  5. _CRTIMP int __cdecl  getch (void);
  6. #ifdef  __cplusplus
  7. }
  8. #endif
  9.  
  10.  

S2  :hola:

49
C/C++ / Re: Calculadora En Prefijo Y Postfijo
« en: Martes 22 de Mayo de 2007, 04:35 »
en mi pag en la parte de artículos -> explicación de artículos, hay una librería para resolver operaciones matemáticas en In-Fijo, fijate como lo planteé y capaz puedas sacar algo que te sirva...

S2

50
C/C++ / Re: Problema Con Graficos
« en: Viernes 18 de Mayo de 2007, 18:06 »
son jodido lo gráfico ehh?  :kicking:

Páginas: 1 [2] 3 4