Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - class_OpenGL

#381
No lanza ningún código de error. El problema es en tiempo de ejecución. El programa se cierra inesperadamente (un crash) cuando se intenta cerrar el archivo (al final de este código).
#382
Hola, muy buenas a tod@s. El problema que tengo es que al intentar cerrar un archivo de un programa que estoy creando, la función que realiza eso crashea el programa.

El código es
Código (c++) [Seleccionar]
cPath.append(".bmp");
cFilteredImage.open(cPath,
                   std::ios_base::out | std::ios_base::trunc | std::ios_base::binary);
if(cFilteredImage.is_open() == true) {
       cFilteredImage.write(lpbyHeader, 54);

       for(unsigned int i = 0; i < stBmpData.uDataSize; i += stBmpData.uBitsPerPixel/8) {
               fVectorLength = calculateLength(&(stBmpData.lpbyData[i]));

               if(fVectorLength <= 100.0)
                       lpbyImageData[i/3] = true;
               else
                       lpbyImageData[i/3] = false;

               if(lpbyImageData[i/3] == true)
                       cFilteredImage.write("\xFF\xFF\xFF", 3);
               else
                       cFilteredImage.write("\x00\x00\x00", 3);
       }

       cFilteredImage.close();
}


A lo mejor la respuesta es obvia, pero no la veo :P Gracias por prestar atención

PD.: El archivo se escribe correctamente. El problema es al cerrarlo
#383
¡¡He caído dos veces en la misma trampa!! No me lo puedo creer... ¡QUE DURO ES APRENDER ASM! Pero es satisfactorio y útil :P
#384
Programación C/C++ / Re: Ayuda programa en C
17 Diciembre 2015, 02:03 AM
MeCraniDos. ¡Te faltan paréntesis!

Aquí
Código (cpp) [Seleccionar]
int algo = 1 + rand() % 10 - 1; //Generamos un aleatorio entre 1 y 10

Tendrías que escribir...
Código (cpp) [Seleccionar]
int algo = 1 + rand() % (10 - 1); //Generamos un aleatorio entre 1 y 10

Porque si no, estarías sumando y restando 1 en la misma "equación" :D

Entonces, la "fórmula" sería:
random_number = min + rand()%(max - min);

Siendo random_number el resultado, min el valor mínimo que puede ser el resultado y max siendo el número más alto que puede alcanzar el número aleatorio
#385
simorg Gracias por confirmar mis sospechas!

Respecto a los errores de ¿javascript? ¿Cómo puedo solucionarlo? No sé lo que es cloudflare. No tengo extensiones en Chrome. Es todo lo que puedo decir xD

Gracias por sus respuestas!





Vale. Esto es extraño. Quien diga que algunos problemas no se solucionan solos (sobre todo en lo referente a los ordenadores), está equivocado, o eso es lo que parece.

Ya no me salta publicidad. Ahora el título de la página me aparece correctamente (antes solamente me aparecía la URL). ¡Ahora me van las ayudas del editor!

¡Muchas gracias por todas sus respuestas!
#386
Hola, muy buenas a tod@s. Espero que esto lo lea algún moderador para que pueda solucionar ese error que voy a comentar y a ver si puede responderme a esto.

Bueno, la primera parte es que ahora, cuando hago click sobre ciertas áreas de esta página, de forma aleatoria me aparece publicidad en un pop-up o nueva pestaña. La pregunta es: ¿es normal, o es alguna clase de "virus"? Me parecería normal porque tenéis que obtener dinero (de algo se come), pero me resulta raro que sea con pop-ups y demás.

La segunda parte es para comentar un error. En el editor, cuando intento usar cualquiera de las ayudas que ofrece, no funciona (por ejemplo, las etiquetas GeSHI las tengo que poner manualmente, o las palabras remarcadas en negrita, o cualquiera de los botones encima del editor de texto de este foro). No sé si es solo a mí, por eso pregunto :P

PD.: Uso Google Chrome en Windows 10 de 64 bits. No tengo ningún tipo de extensión instalada (ni siquiera AdBlock). He pasado el AdwCleaner (para limpiar este tipo de "extensiones" que te añaden publicidad a las páginas que no tienen).

PD2.: En chrome, en su consola (pulsando F12), me aparece como que se han producido 1000 errores xD. Unos ejemplos de esos mil errores que me aparecen:
Uncaught ReferenceError: surroundText is not defined
post.html;board=10.0:378 Uncaught ReferenceError: bbc_highlight is not defined
VM183 post.html;msg=2050893;topic=445635.10;sesc=02dd5f80a8108345c2d72ee8898cf90f:427 Uncaught ReferenceError: storeCaret is not defined
post.html;board=10.0:378 Uncaught ReferenceError: bbc_highlight is not defined
post.html;board=10.0:322 Uncaught ReferenceError: bbc_highlight is not defined
post.html;board=10.0:322 Uncaught ReferenceError: surroundText is not defined
post.html;board=10.0:322 Uncaught ReferenceError: bbc_highlight is not defined
post.html;board=10.0:322 Uncaught ReferenceError: surroundText is not defined
301VM183 post.html;msg=2050893;topic=445635.10;sesc=02dd5f80a8108345c2d72ee8898cf90f:427 Uncaught ReferenceError: storeCaret is not defined
post.html;board=10.0:378 Uncaught ReferenceError: bbc_highlight is not defined


Muchas gracias por su atención y por este gran foro :D
#387
He conseguido solucionar el problema!! La solución (en NASM) es esta:

Código (asm) [Seleccionar]
segment .text
global _change_values

_change_values:
enter 0,0
push ebx

mov edx, dword [ebp+8]
mov ebx, dword [edx]     ; ebx = primer parámetro
mov edx, dword [ebp+12]
mov ecx, dword [edx]     ; ecx = segundo parámetro

; mov dword [ebp+8], ecx   >> Intercambiador v1 NO FUNCIONA
; mov dword [ebp+12], ebx

mov edx, dword [ebp+8] ; Intercambiador v2
mov [edx], ecx
mov edx, dword [ebp+12]
mov [edx], ebx

pop ebx
leave
ret


Esto me plantea otra duda. ¿Por qué el intercambiador v1 no funciona? Sé que le intercambiador v2 si que debe funcionar perfectamente (de hecho, funciona :D), pero no entiendo porque en la primera versión que hice no puede funcionar...

Gracias por toda su ayuda!!

PD.: Sé que he puesto dword de sobra, pero aun quitándolos del intercambiador no funciona...




Aquí está la versión reducida (sinceramente, no sé si se puede optimizar más xD)

Código (asm) [Seleccionar]
segment .text
global _change_values

_change_values:
enter 0,0
push ebx

; void intercambiar(int* valor_a, int* valor_b);

mov eax, dword [ebp+8]  ; eax = value_a
mov ebx, dword [ebp+12] ; ebx = value_b
mov ecx, [eax]          ; ecx = *value_a
mov edx, [ebx]          ; edx = *value_b
mov [eax], edx          ; *valor_a = edx >> *valor_a = *valor_b
mov [ebx], ecx          ; *valor_b = ecx >> *valor_b = *valor_a

pop ebx
leave
ret
#388
CREO QUE POR FIN SÉ LO QUE FALLA, pero el problema es que no sé como solucionarlo... xD

Bueno, el problema es que estoy intercambiando las DIRECCIONES de las variables. Es decir, lo que recibimos con el puntero ebp es la dirección de la dirección, y cuando añadimos corchetes (nasm), a lo que accedemos es a la dirección de la variable.

Código (asm) [Seleccionar]
mov eax, [ebp+0x8] ; [ebp+0x8] es la dirección del primer parámetro
mov ecx, [ebp+0xC] ; [ebp+0xC] es la dirección del segundo parámetro

mov [ebp+0xC], eax ; ¡Hemos intercambiado la dirección de ambas variables, no sus valores!
mov [ebp+0x8], ecx


Lo que se me había ocurrido (aunque no ha funcionado), es añadir doble corchete (debería ser super intuitivo XD):

Código (asm) [Seleccionar]
...
mov eax, [[ebp+0x8]] ;No funciona :(
...


El error que me lanza el ensamblador NASM es:
intercambiar.asm:13: error: expression syntax error
intercambiar.asm:14: error: expression syntax error
intercambiar.asm:15: error: expression syntax error
intercambiar.asm:16: error: expression syntax error


Si alguien sabe como acceder a los valores, por favor, compartidlo :D
#389
Es extraño. Tampoco funciona xD

Esta es la salida obtenida:

Introduzca el valor A: 10
Introduzca el valor B: 20

nValorA = 10
nValorB = 20
#390
Si, es que es alrevés xD

No entiendo por qué tiene que ser tan largo. En teoría, muevo las dos variables a los registros de propósito general y después les doy a las variables los valores intercambiados.

Muevo la primera a eax, muevo la seguda a ebx, le doy a la primera ebx y le doy a la segunda eax... No veo por qué no funciona en mi código. He conseguido que funcione con NASM con un código similar