• Viernes 26 de Abril de 2024, 22:38

Autor Tema:  Variables Local  (Leído 2100 veces)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Variables Local
« en: Sábado 24 de Febrero de 2007, 22:54 »
0
Retorné un poco y assembly y y estoy haciendo buenos avances :P
(Voy por el tutorial 5 de iczelion)

El problema es este, cuando defino una variable como "local" dentro del WndProc y la uso, la aplicacion se cuelga.
Pasa por ejemplo cuando defino local ps PAINTSTRUCT. Cuando la paso como parametro por referencia a alguna funcion de la GDI, cuando ejecuto la aplicacion, es como que no arrancara, aunque sigue corriendo sin mostrar la ventana.

Estuve viendo codigos de fasm, y en ninguno se define variables en el WindProc como locales, en cambio en masm, la mayoría van ahí.

¿Que diferencia y inconveniente hay entre usar o no usar variables local?


El otro problema:
Si uso un editor de recursos para hacer un dialogo  y le coloco algun "componente" uqe no es de los mas comunes como si los son EDIT, LISTBOX, BUTTON...
El dialogo no se muestra a pesar que le recurso del dialogo compila bien, probe tanto usando el RC y el BRCC32 de borland.
Solo probé  con Fasm.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Variables Local
« Respuesta #1 en: Domingo 25 de Febrero de 2007, 18:05 »
0
Cita de: "Enko"
El problema es este, cuando defino una variable como "local" dentro del WndProc y la uso, la aplicacion se cuelga.
Pasa por ejemplo cuando defino local ps PAINTSTRUCT. Cuando la paso como parametro por referencia a alguna funcion de la GDI, cuando ejecuto la aplicacion, es como que no arrancara, aunque sigue corriendo sin mostrar la ventana.

Depuralo  :P A grosso modo las variables locales estan en la pila, son perfectamente seguras y ampliamente utilizadas (son el 99% de las variables de los programas, tambien a grosso modo jeje).

Cita de: "Enko"
Si uso un editor de recursos para hacer un dialogo  y le coloco algun "componente" uqe no es de los mas comunes como si los son EDIT, LISTBOX, BUTTON...

Supongo que sera por no llamar a InitCommonControls/InitCommonControlsEx, fijate en la MSDN.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Variables Local
« Respuesta #2 en: Lunes 26 de Febrero de 2007, 20:34 »
0
Citar
Supongo que sera por no llamar a InitCommonControls/InitCommonControlsEx, fijate en la MSDN.
Gracias por el tip, debe de ser eso porque no llame a la funcion.

Respeto las variables locales, voy a ver que saco... es raro, pero en los ejemplos con los que viene fasm, son todas globales.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Variables Local
« Respuesta #3 en: Lunes 26 de Febrero de 2007, 22:23 »
0
Cita de: "Enko"
Gracias por el tip, debe de ser eso porque no llame a la funcion.

De nadas  B)

Cita de: "Enko"
Respeto las variables locales, voy a ver que saco... es raro, pero en los ejemplos con los que viene fasm, son todas globales.

Depuralo para ver donde se jode; Creo que los ejemplos que tenes son asi por una razon: FASM no soporta variables locales como MASM. Es mucho mas simple usar variables locales ya que son datos que estan dentro de la memoria del ejecutable (en la seccion .data por ejemplo).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Variables Local
« Respuesta #4 en: Lunes 26 de Febrero de 2007, 22:44 »
0
Citar
(en la seccion .data por ejemplo).
Esos son los que uso. Yo me referia a :
Código: Text
  1.  
  2. proc MyProc, var1, va2, var3
  3. local myLocal1 dd ?
  4. local myLocal2 dd ?
  5. endp
  6.  
  7.  
Pero si en el 90% se usan en la seccion .data, los dejo ahí.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Variables Local
« Respuesta #5 en: Lunes 26 de Febrero de 2007, 22:46 »
0
Cita de: "Enko"
Pero si en el 90% se usan en la seccion .data, los dejo ahí.
Si, los de .data son los globales y esos que mostras son locales, pero son estos ultimos los que se usan en un 90%, tipico ejemplo de C:

Código: Text
  1.  
  2. void funcion()
  3. {
  4.   int x = 5; //<< variable local!
  5. }
  6.  
  7.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Variables Local
« Respuesta #6 en: Martes 27 de Febrero de 2007, 23:21 »
0
Encontre la respuesta de porque no se usan variables locales en fasm.
Lo dice el que escribió fasm:
Citar
my point of using global labels everywhere is that it forces you to use unique names for them, which is something I consider a good practice. But you're right that in this example this doesn't make much sense.
O sea, no es que no se pueda, pero en los ejemplos de FAsm que da el autor no se usan porque no le gustan :P

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Variables Local
« Respuesta #7 en: Martes 27 de Febrero de 2007, 23:28 »
0
Cita de: "Enko"
O sea, no es que no se pueda, pero en los ejemplos de FAsm que da el autor no se usan porque no le gustan :P
Variables globales ... en fin ... no hay nada como un buen namespace de C++  :P

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.