elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15
61  Programación / Programación C/C++ / (Ayuda) Obtener lista de archivos y carpetas en una carpeta con C++ en: 2 Julio 2015, 20:24 pm
Hola, muy buenas. Me gustaría saber como obtener una lista de archivos y carpetas dado un directorio en cualquier sistema operativo. Si es posible, me gustaría almacenar esta información en una variable de tipo char **.

Muchas gracias
62  Programación / Programación C/C++ / Re: (Ayuda) Error al modificar el valor de un char en una cadena const char * en: 2 Julio 2015, 15:17 pm
Vale, muchas gracias!
63  Programación / Programación C/C++ / Re: (Ayuda) Error al modificar el valor de un char en una cadena const char * en: 2 Julio 2015, 14:58 pm
Vale, funciona. Pero lo que era constante no era el puntero? Es decir, la dirección es constante y lo que es apuntado se puede modificar? O al revés? Gracias
64  Programación / Programación C/C++ / (Ayuda) Error al modificar el valor de un char en una cadena const char * en: 2 Julio 2015, 14:46 pm
Hola, muy buenas a tod@s. Me estoy desesperando con Visual Studio 12.0 Express. El error se resume en un código muy simple:

Código
  1. int main() {
  2. const char *code;
  3. code = new char[2];
  4. code[0] = 'a'; // Aquí está el error
  5.  
  6.        return 0;
  7. }

Como ven, primero creo una cadena de caracteres. Por consiguiente, la inicializo con el operador new. Y por último, el lugar donde está el error. El error según Visual Studio dice así: "Error: La expresión debe ser un valor L modificable". También he probado lo siguiente:

Código
  1. *code = 'a'

No entiendo lo que pasa. A lo mejor es una tontería...

Espero que me puedan ayudar. Gracias
65  Programación / Programación C/C++ / Re: (Consulta) ¿Por qué pasamos por referencia en la función 'RegisterClassEx' en: 20 Junio 2015, 00:16 am
Vale, gracias :D
66  Programación / Programación C/C++ / (Resuelto) ¿Por qué pasamos por referencia en la función 'RegisterClassEx' en: 19 Junio 2015, 16:16 pm
Hola, muy buenas. Primero quiero aclarar que estoy hablando de la API de Window. Hoy se me presenta una duda la cual es que por qué pasamos por referencia la estructura de una ventana en la función RegisterClassEx. Con esto, se me presenta otra duda: ¿puedo eliminar la estructura (habiendola inicializado con new) una vez llamada la función 'RegisterClasEx', o puede que el programa crashee al intentar acceder a la estructura que he eliminado? Es decir, la duda es que si Windows necesitará en un futuro la estrctura.
67  Programación / Programación C/C++ / Re: |Lo que no hay que hacer en C/C++. Nivel basico| en: 12 Junio 2015, 03:20 am
Eso de los namespace si que esta prácticamente prohibido al programar librerías , porque el código de la librería podría entrar en conflicto con la del usuario. Pero no entiendo porque un programa sencillo no se puede usar eso...


Era un ejemplo :P
68  Programación / Programación C/C++ / (Ayuda) La función wglMakeCurrent(NULL, NULL) crashea el programa a veces en: 10 Junio 2015, 02:08 am
Hola a tod@s. El problema proviene de función de la API de Windows en colaboración con OpenGL. La función es wglMakeCurrent(NULL, NULL). El problema es que que a veces (aleatoriamente) el programa crashea. He buscado por internet, pero nadie ha dado una respuesta que me sirva.

Esta función la utilizo cuando voy a cerrar el programa. Aquí está la función llamada al cerrarse el programa:

Código
  1. void Game::destroy() {
  2. wglMakeCurrent(NULL, NULL);
  3. wglDeleteContext(*hRC);
  4. ReleaseDC(*hWnd, *hDC);
  5.  
  6. delete[] cWindow;
  7. delete[] hWnd;
  8. delete[] Msg;
  9. delete[] hDC;
  10. delete[] hRC;
  11. }
69  Programación / Programación C/C++ / (Ayuda con OpenGL) La función 'SetPixelFormat' me da un error en: 8 Junio 2015, 05:05 am
Hola, muy buenas a tod@s, os comento:

Estaba creando un simple Hello World de OpenGL usando la API de Windows. He ido paso a paso, creando primero una ventana simple con la API de Windows (la cual se ha creado correctamente), y posteriormente he creado un contexto con el viejo OpenGL. El problema lo da la función SetPixelFormat, el cual da el código de error 3221684230 (en hexadecimal 0xC0070006). No tengo ni idea de que puede pasar, incluso he copiado/pegado un código de un contexto de OpenGL de Internet y me pasa lo mismo...

Código
  1. #ifndef UNICODE
  2. #define UNICODE
  3. #endif
  4.  
  5. #include <windows.h>
  6. #include <gl\gl.h>
  7.  
  8. #include <chrono>
  9. #include <thread>
  10.  
  11. #include <iostream>
  12.  
  13. LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  14.  
  15. int main() {
  16. WNDCLASSEX cWindow;
  17. HWND hWnd;
  18. MSG Msg;
  19. HDC hDC;
  20. HGLRC hRC;
  21.  
  22. memset(&Msg, NULL, sizeof(MSG));
  23.  
  24. cWindow.cbSize = sizeof(WNDCLASSEX);
  25. cWindow.hInstance = GetModuleHandle(NULL);
  26. cWindow.lpszClassName = L"¡Título!";
  27. cWindow.lpfnWndProc = WndProc;
  28. cWindow.lpszMenuName = NULL;
  29. cWindow.style = CS_OWNDC;
  30. cWindow.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  31. cWindow.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  32. cWindow.hCursor = LoadCursor(NULL, IDC_ARROW);
  33. cWindow.hbrBackground = (HBRUSH)3;
  34. cWindow.cbClsExtra = 0;
  35. cWindow.cbWndExtra = 0;
  36.  
  37. if(RegisterClassEx(&cWindow) == NULL) {
  38. MessageBox(NULL, L"Error registring a window class!", L"Fatal error", MB_OK | MB_ICONERROR);
  39. PostQuitMessage(0);
  40. }
  41.  
  42. hWnd = CreateWindowEx(0, L"¡Título!", L"¡Título!", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT,
  43.  640, 480, HWND_DESKTOP, NULL, GetModuleHandle(NULL), (void *)NULL);
  44.  
  45. if(hWnd = NULL) {
  46. MessageBox(NULL, L"Error creating a window!", L"Fatal error", MB_OK | MB_ICONERROR);
  47. PostQuitMessage(0);
  48. }
  49.  
  50. ShowWindow(hWnd, SW_SHOWDEFAULT);
  51.  
  52. PIXELFORMATDESCRIPTOR PFD;
  53. int choosenPFD;
  54.  
  55. memset(&PFD, NULL, sizeof(PIXELFORMATDESCRIPTOR));
  56. PFD.nVersion = 1;
  57. PFD.nSize = sizeof(PIXELFORMATDESCRIPTOR);
  58. PFD.iPixelType = PFD_TYPE_RGBA;
  59. PFD.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
  60. PFD.cColorBits = 24;
  61. PFD.cDepthBits = 16;
  62. PFD.iLayerType = PFD_MAIN_PLANE;
  63.  
  64. hDC = GetDC(hWnd);
  65.  
  66. choosenPFD = ChoosePixelFormat(hDC, &PFD);
  67.  
  68. if(!choosenPFD) {
  69. MessageBox(hWnd, L"Error choosing a pixel format (old)!", L"Fatal error", MB_OK | MB_ICONERROR);
  70. PostQuitMessage(0);
  71. }
  72.  
  73. if(!SetPixelFormat(hDC, choosenPFD, &PFD)) {
  74. std::clog << GetLastError();
  75. MessageBox(hWnd, L"Error setting a pixel format (old)!", L"Fatal error", MB_OK | MB_ICONERROR);
  76. PostQuitMessage(0);
  77. }
  78.  
  79. hRC = wglCreateContext(hDC);
  80.  
  81. if(!hRC) {
  82. MessageBox(hWnd, L"Error creating a OpenGL context (old)!", L"Fatal error", MB_OK | MB_ICONERROR);
  83. PostQuitMessage(0);
  84. }
  85.  
  86. if(!wglMakeCurrent(hDC, hRC)) {
  87. MessageBox(hWnd, L"Error linking a OpenGL context with a window!", L"Fatal error", MB_OK | MB_ICONERROR);
  88. PostQuitMessage(0);
  89. }
  90.  
  91. while(Msg.message != WM_QUIT) {
  92. if(PeekMessage(&Msg, hWnd, NULL, NULL, PM_REMOVE)) {
  93. TranslateMessage(&Msg);
  94. DispatchMessage(&Msg);
  95. }
  96.  
  97. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  98.  
  99.  
  100.  
  101. SwapBuffers(hDC);
  102.  
  103. std::this_thread::sleep_for(std::chrono::microseconds(11764));
  104. }
  105.  
  106. wglMakeCurrent(NULL, NULL);
  107. wglDeleteContext(hRC);
  108. ReleaseDC(hWnd, hDC);
  109. DestroyWindow(hWnd);
  110. UnregisterClass(L"¡Título!", GetModuleHandle(NULL));
  111.  
  112. return 0;
  113. }
  114.  
  115. LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  116. switch(uMsg) {
  117. case WM_DESTROY:
  118. PostQuitMessage(0);
  119. }
  120.  
  121. return DefWindowProc(hWnd, uMsg, wParam, lParam);
  122. }
70  Programación / Programación C/C++ / Re: Motor juegos C++, openGL y codeblocks en: 5 Junio 2015, 01:30 am
C++ es un lenguaje que es secuencial a primera vista, es decir, que las cosas se van haciendo en el orden que vas escribiendo. En el caso de javascript, es cierto que tenemos la función 'setTimeout', pero C++ no usa ese método.

En C++, para que algo se repita indefinidamente (hasta que se cierra el juego, o así) tienes, como ya se ha mencionado, la recursividad.

Un ejemplo:

Código
  1. void run() {
  2.    Act();
  3.    Paint();
  4.  
  5.    run();
  6. }

Analicemos:
Una vez se ejecuta por primera vez esa función 'run', se va a ejecutar Act(), posteriormente se va a ejecutar la función 'Paint' y por último se va a ejecutar la función 'run', y comencamos de nuevo el ciclo.

Si lo que quieres es pausar la función 'run' un tiempo determinado, harías lo siguiente:

Código
  1. #include <thread>
  2. #include <chrono>
  3.  
  4. void run() {
  5.    Act();
  6.    Paint();
  7.  
  8.    std::this_thread::sleep_for(std::chrono::milliseconds(17));
  9.    run();
  10. }

Lo que hace 'std::this_thread::sleep_for(std::chrono::milliseconds(17));' es pausar el programa entero 17 milisegundos

Este es un ejemplo algo tosco, por lo que habría que añadirle mas cosas para que vaya mejor. Suerte
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines