Se rompe el programa

Se rompe el programa

Postby jfafive » Thu Aug 14, 2008 3:09 pm

Hola,

Tengo un XBROWSE que muestra el contenido de un array. Dihco array, contiene un directorio obtenido con la función ADIRECTORY().

Si lo lleno con todos los ficheros del disco duro, es deicr, *.*, me muestra todos los ficheros encontrados desde c:\ en el XBROWSE.

Tengo programado el XBrowse, para que al pulsar sobre la coumna Path, me muestre una ventana del tipo GET MULTILINE, con la ruta de acceso completa de la fila seleccionada.

El browse muestra dos columnas, nombre_fichero y ruta de acceso

He visto que solo cuando se trata de un gran volumen de ficheros, al cerrar la ventana que muestra el path del fichero seleccionado, se rompe el programa.

No da ningun mensaje de error. Simplemente se cierra la aplicación.

Este fallo, como digo, solo ocurre cuando cargo el array con gran volumen de datos. ¿se trata de algun error de memoria? ¿tal vez hay un limite de valores para el array o el xbrowse?

:cry:
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Postby Antonio Linares » Sat Aug 16, 2008 6:50 am

Javier,

Una salida de la aplicación como comentas, normalmente se debe a un error de recursividad en C, que hace que se llegue al límite del stack de C y el sistema operativo cierra la aplicación, por seguridad.

Has comprobado si se llega a generar un fichero error.log ?

Podrías proporcionar un pequeño ejemplo, autocontenido, para reproducirlo aqui ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby jfafive » Sat Aug 16, 2008 1:23 pm

Pues no llega a generar ningún error.log

Voy a preparar una muestra y te la envio.

Un saludo y gracias Antonio,
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Postby jfafive » Mon Aug 18, 2008 8:09 am

Antonio,

Te mando la prueba por email.
He podido observar que el problema solo ocurre cuando se trata de un XBrowse tipo SetTree con array.

Si lo hago con un XBrowse normal, no hay problema.

Un saludo.
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Postby jfafive » Wed Aug 20, 2008 7:30 pm

Hola de nuevo Antonio

¿has podido ver algo del codigo que te envié?, ya sabes XBrowse con SetTree que se rompe sin más...
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Postby Antonio Linares » Wed Aug 20, 2008 10:15 pm

Javier,

Aqui no se rompe. Lo que ocurre es que tarda mucho en hacer lo que esté haciendo y parece que se cuelga, pero finalmente aparece :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Antonio Linares » Wed Aug 20, 2008 10:16 pm

Ponle un SysRefresh() aqui y verás como le dejas respirar :-)
Code: Select all  Expand view
STATIC function fTree( cPath )

local x
local aFiles    := Iif( SubStr( AllTrim( cPath ), Len( cPath ), 1 ) = "\",;
                        directory( cPath + '*.*' , 'D' ),;
                        directory( cPath + '\*.*', 'D' ) )

local nFilCount := len( aFiles )

SysRefresh()
...
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Antonio Linares » Wed Aug 20, 2008 10:26 pm

De todas formas, lo más efectivo sería no cargar todo de golpe, sino progresivamente, según sea el directorio que se quiera revisar.

No se, depende del diseño que tengas en mente
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 45 guests