Cambios en lIsDir

Cambios en lIsDir

Postby Carlos Mora » Thu Jul 19, 2007 11:21 am

Hola Antonio
En las novedades leo
Corrección: Recientes cambios en la función lIsDir() no estaban funcionando correctamente. Ahora funcionan correctamente.


Cual era el comportamiento anómalo? Porque antes me funcionaba bien y ahora me fallan todos los lIsDir en la aplicación!

Saludos,

Carlos.
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby Antonio Linares » Thu Jul 19, 2007 11:44 am

Carlos,

Estas usando FWH 7.07 ?
regards, saludos

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

Postby Carlos Mora » Mon Jul 23, 2007 11:07 am

Si Antonio, 7.07 con xHarbour 7.07.
El cambio de comportamiento respecto de 7.04 parece ser que no acepta nombre de directorio terminados en '\', Por ejemplo:

? lIsDir( "C:\Windows" ) => .T.
? lIsDir( "C:\Windows\" ) => .T. en 7.04, .F. en 7.07

Saludos,

Carlos.
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby elmoiquique » Sat Jul 05, 2008 12:57 am

Yo tenia instalado el 7.01 y el lIdir funcionaba , ahora instale el 8.05 y no funciona.

lIsdir("A:")

a que se debe
Fivewin-Xharbour 24.09, Iquique, Chile
elmoiquique
 
Posts: 316
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Postby elmoiquique » Mon Jul 07, 2008 2:30 pm

Alguien ha podido solucionar este problema o existe otra funcion que realice esta verificacion de directorios.

El problema radica en que no tiene considerado la letra de la unidad, en mi caso es por eso que no reconoce ningun directorio ejemplo.

lisdir ("a:\windows") .f. el directorio si existe en la unidad a:

lisdir ("\windows") .t. el directorio existe pero en la unidad c:


Ahora si el diskette no se encuentra en la unidad te devuelve una pantalla de error de windows, tampoco se puede controlar ese mensaje de error.

para solucionar este problema debes cambiarte de unidad, verificar que exista el directorio y volver a la unidad actual donde estabas trabajando

En el anterior FW 7.01 funcionaba sin problema pero ahora con las nuevas versiones se volvio un problema.

fwh 8.05 xharbour
Fivewin-Xharbour 24.09, Iquique, Chile
elmoiquique
 
Posts: 316
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Postby Antonio Linares » Mon Jul 07, 2008 10:56 pm

El código fuente de la función lIsDir() esta ahora totalmente basado en Harbour/xHarbour:
Code: Select all  Expand view  RUN
function lIsDir( cDirName )   // Checks an existing directory

   local aResult

   if Right( cDirName, 1 ) == "\" .or. Right( cDirName, 1 ) == "/"
      cDirName = Left( cDirName, Len( cDirName ) - 1 )
   endif
   
   aResult = Directory( cDirName, "DHS" )
   
return Len( aResult ) == 1 .and. "D" $ aResult[ 1 ][ 5 ]
regards, saludos

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

Postby elmoiquique » Tue Jul 08, 2008 12:14 am

Hola Antonio, gracias por tu respuesta..........

Pero la funcion quedo muy limitada, ya que solo verifica directorios que estan en la unidad actual, como los ejemplos anteriores, ya que al asignarle una letra de unidad siempre da .F., aunque el directorio exista en esa unidad, el lIsdir anterior tenia esa cualidad de verificar en cualquier unidad el directorio.

Pienso modestamente que la funcion anterior es mejor que la actual....

Pero ya lo solucione copiando la funcion anterior dentro de mi programa lo cual ha funcionado super bien.

Y por Ultimo el mensaje que envia el LCHDIR() cuando no existe es un mensaje del propio Windows y no hay alternativa de colocarle el mensaje que uno quiere. en la version anterior de fivewin 7.01 que trabajaba todo funcionaba bien

Saludos
Fivewin-Xharbour 24.09, Iquique, Chile
elmoiquique
 
Posts: 316
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 38 guests