Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2009-10

OpenDialog y Vista

9 messages · 2 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Antonio Caballero Martínez

Hola a tod en s ...

Tengo un peque�o problema con Lazarus, y windows Vista. En mi programa, hago uso de un componente TOpenDialog, pero en Win-Vista produce un error en tiempo de ejecuci�n.
Sin embargo, en las versiones anteriores (Xp, 2k, ...) no da error.

Buscando algo de informaci�n en internet, he localizado una unit para sustituir este componente [en
http://www.dotfusion.net/vista-compatible-open-and-save-dialog-in-lazarus-freepascal]; pero me encuentro con el dilema de no saber c�mo identificar la versi�n del sistema operativo en el que se est� ejecutando el programa. He tratado de hacer uso de las directivas condicionales como:

/  uses
   Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  {$IFDEF WIN32}
    Windows;
  {$ENDIF}
  {$IFDEF Unix}
    ports;
  {$ENDIF}
/

Pero as� no obtengo en realidad qu� windows es ... �Alguna idea o sugerencia?
Gracias de antemano ...
------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20091013/3bcfabd2/attachment.html>

Reply by email

JoshyFun
to Antonio Caballero Martínez

Hello Antonio,

Tuesday, October 13, 2009, 5:03:02 PM, you wrote:

ACM> Tengo un peque�o problema con Lazarus, y windows Vista. En mi programa, ACM> hago uso de un componente TOpenDialog, pero en Win-Vista produce un ACM> error en tiempo de ejecuci�n.
ACM> Sin embargo, en las versiones anteriores (Xp, 2k, ...) no da error.

Si te da error de ejecuci�n hay algo mal, ya que deber�a funcionar perfectamente en todas las versiones de Windows incluido "Seven", eso si, con el "look" de windows cl�sico tipo XP, no con el de vista ni el de seven. � Qu� Lazarus usas ? � Puedes generar un proyecto peque�o que te lance el error de ejecuci�n para buscar el problema ?

ACM> tratado de hacer uso de las directivas condicionales como: ACM> / uses
ACM> Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls, ACM> {$IFDEF WIN32}
ACM> Windows;
ACM> {$ENDIF}
ACM> {$IFDEF Unix}
ACM> ports;
ACM> {$ENDIF}
ACM> /
ACM> Pero as� no obtengo en realidad qu� windows es ... �Alguna idea o ACM> sugerencia?

No necesitas condicionales de compilaci�n, ya que estos s�lo te dir�n si es Windows u otro sistema operativo, pero no la versi�n del mismo. Eso s�lo puedes hacerlo en "runtime", para ello haz uso del "uses winver;" y tendr�s acceso a Win32Platform, Win32MajorVersion, .... Para una explicaci�n de cada cosa esta web.

http://www.mydigitallife.info/2008/12/29/windows-build-version-interpretation-explanation-and-definition/

Best regards, JoshyFun

Reply by email

Antonio Caballero Martínez
to JoshyFun

El 13/10/2009 18:06, JoshyFun escribi�:

Show quoted text 6 lines
Si te da error de ejecuci�n hay algo mal, ya que deber�a funcionar perfectamente en todas las versiones de Windows incluido "Seven", eso si, con el "look" de windows cl�sico tipo XP, no con el de vista ni el de seven. � Qu� Lazarus usas ? � Puedes generar un proyecto peque�o que te lance el error de ejecuci�n para buscar el problema ?

Pues no hay error ninguno ... Es m�s, lo he probado en un programa limpio en el que solo tengo un OpenDialog, y un bot�n que al hacer doble click ejecuta el c�digo:

         IF ( OpenDialog1.Execute) THEN label1.caption:=

OpenDialog1.Filename;
y sigue d�ndo el mismo error (no recuerdo ahora mismo la frase que da, pero termina diciendo algo as� con letras may�sculas SEG no se qu�) ...

Lo que s� he hecho, tras tus indicaciones, es poner la vista o look cl�sica tipo Xp y/o 2k. Teniendo Lazarus abierto y presionando la tecla F9 para compilar y ejecutar; al pulsar sobre el bot�n para abrir el OpenDialog, da una ventanita que indica el error (la que dec�a antes). Sin embargo, teniendo activado el look o apariencia tipo Xp o 2k; y ejecut�ndo el ejecutable obtenido con lazarus desde el explorador; s� abre perfectamente el cuadro de dialogo de archivos (OpenDialog); y no da error ninguno.
�Misterios de las betas? No s�, la verdad ... Pero me deja algo perplejo el asunto ...

Uso Lazarus 0.9.29 beta, de fecha 2009-09-10, con fpc v2.3.1, revisi�n SVN 21640, i386-win32-win32/win64.

Show quoted text 8 lines
No necesitas condicionales de compilaci�n, ya que estos s�lo te dir�n si es Windows u otro sistema operativo, pero no la versi�n del mismo. Eso s�lo puedes hacerlo en "runtime", para ello haz uso del "uses winver;" y tendr�s acceso a Win32Platform, Win32MajorVersion, .... Para una explicaci�n de cada cosa esta web. http://www.mydigitallife.info/2008/12/29/windows-build-version-interpretation-explanation-and-definition/

Ya, trataba de hacer uso con la url que d� antes, de alguna directiva para compilar esa unit para el OpenDialog especialmente para el caso Win-vista; y el componente OpenDialog normal que viene por defecto en Lazarus para el resto de sistemas ...

Reply by email

JoshyFun
to Antonio Caballero Martínez

Hello Antonio,

Tuesday, October 13, 2009, 10:16:41 PM, you wrote:

ACM> El 13/10/2009 18:06, JoshyFun escribi�:

Show quoted text 6 lines
> Si te da error de ejecuci�n hay algo mal, ya que deber�a funcionar > perfectamente en todas las versiones de Windows incluido "Seven", eso > si, con el "look" de windows cl�sico tipo XP, no con el de vista ni el > de seven. � Qu� Lazarus usas ? � Puedes generar un proyecto peque�o que > te lance el error de ejecuci�n para buscar el problema ? >

ACM> Pues no hay error ninguno ... Es m�s, lo he probado en un programa ACM> limpio en el que solo tengo un OpenDialog, y un bot�n que al hacer doble ACM> click ejecuta el c�digo:
ACM> IF ( OpenDialog1.Execute) THEN label1.caption:= ACM> OpenDialog1.Filename;
ACM> y sigue d�ndo el mismo error (no recuerdo ahora mismo la frase que ACM> da, pero termina diciendo algo as� con letras may�sculas SEG no se qu�) ...

Es de suponer que es un Segmentation Fault, o lo que es lo mismo un error de esos de punteros locos. Acabo de probarlos en Vista64 y no he apreciado ning�n problema (excepto si pones "OldStyle" que si provoca un error para el que enviar� un parche).

ACM> Lo que s� he hecho, tras tus indicaciones, es poner la vista o look ACM> cl�sica tipo Xp y/o 2k. Teniendo Lazarus abierto y presionando la tecla ACM> F9 para compilar y ejecutar; al pulsar sobre el bot�n para abrir el ACM> OpenDialog, da una ventanita que indica el error (la que dec�a antes). ACM> Sin embargo, teniendo activado el look o apariencia tipo Xp o 2k; y ACM> ejecut�ndo el ejecutable obtenido con lazarus desde el explorador; s� ACM> abre perfectamente el cuadro de dialogo de archivos (OpenDialog); y no ACM> da error ninguno.
ACM> �Misterios de las betas? No s�, la verdad ... Pero me deja algo ACM> perplejo el asunto ...
ACM> Uso Lazarus 0.9.29 beta, de fecha 2009-09-10, con fpc v2.3.1, ACM> revisi�n SVN 21640, i386-win32-win32/win64.

Hmmm. qu� vista ? Tienes instalado alg�n paquete que altere el Aero ? Si puedes por favor f�jate cual es el error lo m�s exacto posible para intentar localizar el problema.

Show quoted text 7 lines
> No necesitas condicionales de compilaci�n, ya que estos s�lo te dir�n > si es Windows u otro sistema operativo, pero no la versi�n del mismo. > Eso s�lo puedes hacerlo en "runtime", para ello haz uso del "uses > winver;" y tendr�s acceso a Win32Platform, Win32MajorVersion, .... > Para una explicaci�n de cada cosa esta web. > > http://www.mydigitallife.info/2008/12/29/windows-build-version-interpretation-explanation-and-definition/

ACM> Ya, trataba de hacer uso con la url que d� antes, de alguna ACM> directiva para compilar esa unit para el OpenDialog especialmente para ACM> el caso Win-vista; y el componente OpenDialog normal que viene por ACM> defecto en Lazarus para el resto de sistemas ...

No puedes con condicionales, tendr�s que limitarte a algo como:

if (Win32MajorVersion>=6) and (Win32Minor>=NoSe) then begin
  VistaOpenDialogOpen(.....)
end else begin
  OpenDialog1.Execute();
end;

De todos modos voy a pegarle un ojo a ver si consigo que los OpenDialog no especializados (lo que provoca que salgan estilo XP) se puedan tratar sin hacer un "Hooking" y por lo tanto saldr�an tipo Vista.

Best regards, JoshyFun

Reply by email

Antonio Caballero Martínez
to JoshyFun

El 13/10/2009 23:04, JoshyFun escribi�:

Show quoted text 26 lines
Hello Antonio, Tuesday, October 13, 2009, 10:16:41 PM, you wrote: ACM> El 13/10/2009 18:06, JoshyFun escribi�: >> Si te da error de ejecuci�n hay algo mal, ya que deber�a funcionar >> perfectamente en todas las versiones de Windows incluido "Seven", eso >> si, con el "look" de windows cl�sico tipo XP, no con el de vista ni el >> de seven. � Qu� Lazarus usas ? � Puedes generar un proyecto peque�o que >> te lance el error de ejecuci�n para buscar el problema ? >> >> ACM> Pues no hay error ninguno ... Es m�s, lo he probado en un programa ACM> limpio en el que solo tengo un OpenDialog, y un bot�n que al hacer doble ACM> click ejecuta el c�digo: ACM> IF ( OpenDialog1.Execute) THEN label1.caption:= ACM> OpenDialog1.Filename; ACM> y sigue d�ndo el mismo error (no recuerdo ahora mismo la frase que ACM> da, pero termina diciendo algo as� con letras may�sculas SEG no se qu�) ... Es de suponer que es un Segmentation Fault, o lo que es lo mismo un error de esos de punteros locos. Acabo de probarlos en Vista64 y no he apreciado ning�n problema (excepto si pones "OldStyle" que si provoca un error para el que enviar� un parche).

En la ventanita de error aparece un circulito rojo con un aspa blanca, cuyo mensaje de la ventanita es: "Project1.exe raised exception class 'External: SIGSEGV'". Desconozco si se pueden enviar adjuntos a la lista, pero si hace falta podria mandar el proyecto y la ventana de error ...
Esto, en el proyecto limpio, en el que solamente tengo un formulario principal con un bot�n, un label, y un opendialog. Idem con el programa que estoy desarrollando, pero cambiando el nombre del ejecutable.

La versi�n de windows bajo la que compilo es windows vista home premium service pack 1 de 32 bits.

Otra cosa: actualic� ayer el compilador Lazarus, con la �ltima versi�n del Snapshoot v0.9.29 beta de fecha 2009-10-12 y fpc v2.3.1; y sigue generando el mismo error ...
Destacar, que tengo puesto el men� de inicio cl�sico, y no hago uso de ning�n tema ni nada rarito ... Es por defecto la configuraci�n que trae ...

Show quoted text 17 lines
ACM> Lo que s� he hecho, tras tus indicaciones, es poner la vista o look ACM> cl�sica tipo Xp y/o 2k. Teniendo Lazarus abierto y presionando la tecla ACM> F9 para compilar y ejecutar; al pulsar sobre el bot�n para abrir el ACM> OpenDialog, da una ventanita que indica el error (la que dec�a antes). ACM> Sin embargo, teniendo activado el look o apariencia tipo Xp o 2k; y ACM> ejecut�ndo el ejecutable obtenido con lazarus desde el explorador; s� ACM> abre perfectamente el cuadro de dialogo de archivos (OpenDialog); y no ACM> da error ninguno. ACM> �Misterios de las betas? No s�, la verdad ... Pero me deja algo ACM> perplejo el asunto ... ACM> Uso Lazarus 0.9.29 beta, de fecha 2009-09-10, con fpc v2.3.1, ACM> revisi�n SVN 21640, i386-win32-win32/win64. Hmmm. qu� vista ? Tienes instalado alg�n paquete que altere el Aero ? Si puedes por favor f�jate cual es el error lo m�s exacto posible para intentar localizar el problema.

No tengo instalado ning�n paquete que distorsione ... Es el windows vista a pelo ...
En cuanto al compilador, solo tengo instalado 4 componentes de los que hago uso: TPowerPdf (v 20081006),TLabelCut, TRackCtls v1.20.3, y TUniqueInstance v0.1

Show quoted text 26 lines
>> No necesitas condicionales de compilaci�n, ya que estos s�lo te dir�n >> si es Windows u otro sistema operativo, pero no la versi�n del mismo. >> Eso s�lo puedes hacerlo en "runtime", para ello haz uso del "uses >> winver;" y tendr�s acceso a Win32Platform, Win32MajorVersion, .... >> Para una explicaci�n de cada cosa esta web. >> >> http://www.mydigitallife.info/2008/12/29/windows-build-version-interpretation-explanation-and-definition/ >> ACM> Ya, trataba de hacer uso con la url que d� antes, de alguna ACM> directiva para compilar esa unit para el OpenDialog especialmente para ACM> el caso Win-vista; y el componente OpenDialog normal que viene por ACM> defecto en Lazarus para el resto de sistemas ... No puedes con condicionales, tendr�s que limitarte a algo como: if (Win32MajorVersion>=6) and (Win32Minor>=NoSe) then begin VistaOpenDialogOpen(.....) end else begin OpenDialog1.Execute(); end; De todos modos voy a pegarle un ojo a ver si consigo que los OpenDialog no especializados (lo que provoca que salgan estilo XP) se puedan tratar sin hacer un "Hooking" y por lo tanto saldr�an tipo Vista.

Vale ...

Saludos nuevamente, y gracias, si no lo hab�a dicho ya ...

Reply by email

JoshyFun
to Antonio Caballero Martínez

Hello Antonio,

Wednesday, October 14, 2009, 11:53:28 AM, you wrote:

ACM> En la ventanita de error aparece un circulito rojo con un aspa ACM> blanca, cuyo mensaje de la ventanita es: "Project1.exe raised exception ACM> class 'External: SIGSEGV'". Desconozco si se pueden enviar adjuntos a la ACM> lista, pero si hace falta podria mandar el proyecto y la ventana de ACM> error ...
ACM> Esto, en el proyecto limpio, en el que solamente tengo un ACM> formulario principal con un bot�n, un label, y un opendialog. Idem con ACM> el programa que estoy desarrollando, pero cambiando el nombre del ACM> ejecutable.
ACM> La versi�n de windows bajo la que compilo es windows vista home ACM> premium service pack 1 de 32 bits.

Ok, entiendo... Puede que tu problema est� relacionado con un bug que he publicado en el tracker ayer, de hecho creo que el parche solucionar�a el problema (aunque en mi Vista no sucede).

http://bugs.freepascal.org/view.php?id=14794

Si puedes aplica el parche, si no puedes o no sabes como aplicarlo d�melo y te envio a la lista el parche para que puedas modificar el .inc afectado manualmente, despu�s compilas la LCL y a probar.

ACM> Saludos nuevamente, y gracias, si no lo hab�a dicho ya ...

De nada hombre, quiz� gracias a ti se ha pillado un nuevo bug :)

Best regards, JoshyFun

Reply by email

Antonio Caballero Martínez
to JoshyFun

El 14/10/2009 14:48, JoshyFun escribi�:

Show quoted text 30 lines
Hello Antonio, Wednesday, October 14, 2009, 11:53:28 AM, you wrote: ACM> En la ventanita de error aparece un circulito rojo con un aspa ACM> blanca, cuyo mensaje de la ventanita es: "Project1.exe raised exception ACM> class 'External: SIGSEGV'". Desconozco si se pueden enviar adjuntos a la ACM> lista, pero si hace falta podria mandar el proyecto y la ventana de ACM> error ... ACM> Esto, en el proyecto limpio, en el que solamente tengo un ACM> formulario principal con un bot�n, un label, y un opendialog. Idem con ACM> el programa que estoy desarrollando, pero cambiando el nombre del ACM> ejecutable. ACM> La versi�n de windows bajo la que compilo es windows vista home ACM> premium service pack 1 de 32 bits. Ok, entiendo... Puede que tu problema est� relacionado con un bug que he publicado en el tracker ayer, de hecho creo que el parche solucionar�a el problema (aunque en mi Vista no sucede). http://bugs.freepascal.org/view.php?id=14794 Si puedes aplica el parche, si no puedes o no sabes como aplicarlo d�melo y te envio a la lista el parche para que puedas modificar el .inc afectado manualmente, despu�s compilas la LCL y a probar. ACM> Saludos nuevamente, y gracias, si no lo hab�a dicho ya ... De nada hombre, quiz� gracias a ti se ha pillado un nuevo bug :)

Hola nuevamente JoshyFun:

Me vas a disculpar, pero no s� c�mo aplicar el parche que mencionas, y que figura en la url que facilitas ... Una ayudita con los pasos a seguir, aunque sea muy encima, no vendr�a nada mal ...

Agradecido, como es de esperar ...

Reply by email

JoshyFun
to Antonio Caballero Martínez

Hello Antonio,

you wrote

ACM> Me vas a disculpar, pero no s� c�mo aplicar el parche que ACM> mencionas, y que figura en la url que facilitas ... Una ayudita con los ACM> pasos a seguir, aunque sea muy encima, no vendr�a nada mal ...

Como me imagino que instalarte el Lazarus desde el SVN es un poco inc�modo para ti por el motivo que sea, lo m�s f�cil es que abras el Lazarus, en cualquier proyecto, da igual, vayas a abrir fichero y abras el que est� en:

\Lazarus\lcl\interfaces\win32\win32wsdialogs.pp

Una vez abierto buscas la funci�n

function OpenFileDialogCallBack(Wnd: HWND; uMsg: UINT; wParam: WPARAM;

Que est� m�s o menos en la linea 424 y a partir de ah� la cambies toda (hasta la linea 486 +/-) por la que mando en el fichero adjunto. Luego vas a "Herramientas -> Configurar build lazarus" y le dices que reconstruya la LCL s�lo!. Una vez que finalice recompilas tu aplicaci�n como siempre y a ver que pasa.

Best regards, JoshyFun ------------ pr�xima parte ------------ An embedded and charset-unspecified text was scrubbed... Name: openfile.txt URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20091014/03ad8e28/attachment.txt>

Reply by email

Antonio Caballero Martínez
to JoshyFun

El 14/10/2009 17:27, JoshyFun escribi�:

Show quoted text 28 lines
Hello Antonio, Wednesday, October 14, 2009, 4:06:49 PM, you wrote: >> http://bugs.freepascal.org/view.php?id=14794 >> ACM> Me vas a disculpar, pero no s� c�mo aplicar el parche que ACM> mencionas, y que figura en la url que facilitas ... Una ayudita con los ACM> pasos a seguir, aunque sea muy encima, no vendr�a nada mal ... Como me imagino que instalarte el Lazarus desde el SVN es un poco inc�modo para ti por el motivo que sea, lo m�s f�cil es que abras el Lazarus, en cualquier proyecto, da igual, vayas a abrir fichero y abras el que est� en: \Lazarus\lcl\interfaces\win32\win32wsdialogs.pp Una vez abierto buscas la funci�n function OpenFileDialogCallBack(Wnd: HWND; uMsg: UINT; wParam: WPARAM; Que est� m�s o menos en la linea 424 y a partir de ah� la cambies toda (hasta la linea 486 +/-) por la que mando en el fichero adjunto. Luego vas a "Herramientas -> Configurar build lazarus" y le dices que reconstruya la LCL s�lo!. Una vez que finalice recompilas tu aplicaci�n como siempre y a ver que pasa.

Hola nuevamente JoshyFun ...

Anoche estuve probando y trasteando tus indicaciones ... Y siento comunicarte, que todo sigue igual ... Se sigue generando el mismo mensaje de error cuando est� abierto Lazarus, y pulsamos la tecla F9 para compilar y ejecutar ...
�Sabes si es un bug, y puede reportarse de alguna manera? Siempre tengo la opci�n de ejecutar el archivo .exe desde el explorador o la l�nea de comandos ... Pero no parece ser muy de recibo ...

Reply by email