In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Curdrive() HB_Curdrive()

Foro de Xailer profesional en español
Responder
Avatar de Usuario
XeviCOMAS
Mensajes: 585
Registrado: Sab Mar 12, 2011 8:16 pm

Curdrive() HB_Curdrive()

Mensaje por XeviCOMAS »

Estoy teniendo problemas con Harbour... por culpa de esta función.
Si bien HB_Curdrive() funciona correctamente cuando se trata de una unidad
lógica o virtual, no pasa lo mismo cuando se trata de un acceso directo
apuntando a un equipo de red.
A ver si me explico.
Cuando localmente solicitamos HB_Curdrive... todo correcto, devuelve la
letra de la unidad.
Cuando tenemos un acceso directo que apunta a una unidad de red...
"X:MiCarpetaMiAplicacion.exe"... todo continua correcto, devuelve la letra
"X" correctamente.
El problema está en si ese acceso directo apunta a un equipo de red sin
unidad asignada...
"MiEquipoMiCarpetaMiAplicacion.exe"
Aquí, CurDrive de xHarbour devuelve ""... lo veo lógico, ¿No???
PERO, HB_Curdrive devuelve "A" ¿?¿? y eso???
Sabiendo eso, lo puedo sortear y si me devuelve "A"... le cambio por "",
pero no encuentro que el resultado devuelto por HB_CurDrive sea el correcto,
no creeis????
Un Saludo,
Xevi.
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 7765 (20121204) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
Un Saludo,
Xevi.
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Curdrive() HB_Curdrive()

Mensaje por jlalin »

Xevi,
¿has probado con CurDrive() (sin el prefijo HB_) de Harbour directamente?
Saludos,
José Lalí­n
Avatar de Usuario
XeviCOMAS
Mensajes: 585
Registrado: Sab Mar 12, 2011 8:16 pm

Curdrive() HB_Curdrive()

Mensaje por XeviCOMAS »

José,
la función Curdrive() no existe en Harbour...
Es una de mis primeras preguntas al migrar de xHb a Hb... y que la solución
pasó por utilizar HB_CurDrive()
Un Saludo,
Xevi.
"José Lalín" <dezac@corevia.com> ha escrit al missatge del grup de
discussió: 50bf44e9$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Xevi,
¿has probado con CurDrive() (sin el prefijo HB_) de Harbour directamente?
Saludos,
José Lalín
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 7767 (20121205) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 7767 (20121205) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
Un Saludo,
Xevi.
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Curdrive() HB_Curdrive()

Mensaje por jlalin »

Xevi,
se me fue la pinza con el nombre de la función... Prueba con FileDrive(
CurDir() ).
Saludos,
José Lalí­n
Avatar de Usuario
XeviCOMAS
Mensajes: 585
Registrado: Sab Mar 12, 2011 8:16 pm

Curdrive() HB_Curdrive()

Mensaje por XeviCOMAS »

José,
No funciona... devuelve una cadena vacía.
cCurDrive := FileDrive( CurDir() )
MsgInfo( cCurDrive )
Normal.. CurDir() devuelve MiOrdenadorMiCarpeta"
No hay problema... lo soluciono con...
#ifdef __XHARBOUR__
cCurDrive := CurDrive()
#else
cCurDrive := HB_CurDrive()
If( cCurDrive = "A", cCurDrive := "", )
#endif
Sólo que no me parece normal que tratándose de un enlace a un equipo de red,
devuelva una letra de unidad que no se corresponde...
Un Saludo,
Xevi.
"José Lalín" <dezac@corevia.com> ha escrit al missatge del grup de
discussió: 50bf8ab6$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Xevi,
se me fue la pinza con el nombre de la función... Prueba con FileDrive(
CurDir() ).
Saludos,
José Lalín
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 7767 (20121205) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 7767 (20121205) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
Un Saludo,
Xevi.
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Curdrive() HB_Curdrive()

Mensaje por jlalin »

Xevi,
> If( cCurDrive = "A", cCurDrive := "", )
El que devuelva la "A" me parece más un bug (viendo el código) que otra cosa.
Prueba estas: HB_ProgName() y HB_BaseDir(). Parece que devuelven la ruta
del ejecutable y quizás estas devuelvan la letra de la unidad correctamente
en todos los casos.
Saludos,
José Lalí­n
Avatar de Usuario
XeviCOMAS
Mensajes: 585
Registrado: Sab Mar 12, 2011 8:16 pm

Curdrive() HB_Curdrive()

Mensaje por XeviCOMAS »

José,
HB_BaseDir() serà que no existe en Harbour...
Compilant Comandes.prg...
Enllaçant GWin.exe...
Error: Unresolved external '_HB_FUN_HB_BASEDIR' referenced from
X:XEVIXAILERGWINOBJCOMANDES.OBJ
1 Files, 0 Warnings, 1 Errors
Temps de compilació: 2.76s Temps d'enllaçat: 5.62s Temp total: 9.45s
HB_ProgName() seria casi perfecto!!!
Devuelve unidad correcta o "" si es red, ruta y nombre fichero.
Necesito SOLO unidad y ruta... sin el nombre del fichero!!!
Tendré que "cortar" y quedarme unidad y ruta... ¿asi???
Left( HB_ProgName(), RAt( "", HB_ProgName() ) -1 )
Aunque lo tenía resuelto, veo que es mejor opción... aunque sigo creiendo
que es un bug de la función HB_Curdrive()
Un Saludo,
Xevi.
"José Lalín" <dezac@corevia.com> ha escrit al missatge del grup de
discussió: 50bf97f4$[email=2@svctag-j7w3v3j....]2@svctag-j7w3v3j....[/email]
Xevi,
> If( cCurDrive = "A", cCurDrive := "", )
El que devuelva la "A" me parece más un bug (viendo el código) que otra
cosa.
Prueba estas: HB_ProgName() y HB_BaseDir(). Parece que devuelven la ruta
del ejecutable y quizás estas devuelvan la letra de la unidad correctamente
en todos los casos.
Saludos,
José Lalín
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas
de virus 7770 (20121205) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 7770 (20121205) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
Un Saludo,
Xevi.
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Curdrive() HB_Curdrive()

Mensaje por jlalin »

Xevi,
prueba con la nativa de Xailer: FilePath( HB_ProgName() )
Saludos,
José Lalí­n
jasm.quitaesto
Mensajes: 420
Registrado: Sab Ago 16, 2008 9:06 pm

Curdrive() HB_Curdrive()

Mensaje por jasm.quitaesto »

Hola
¿Damos con una solución para este galimatí­as del CurDrive()?
Se me ocurre hacer una función sustitutiva y meterla en nuestros proyectos:
FUNCTION CurDrive()
RETURN Left( FilePath( HB_ProgName() ), 1 )
Saludos
Alf+.
El 05/12/2012 10:32, Xevi escribió:
> Estoy teniendo problemas con Harbour... por culpa de esta función.
>
> Si bien HB_Curdrive() funciona correctamente cuando se trata de una unidad
> lógica o virtual, no pasa lo mismo cuando se trata de un acceso directo
> apuntando a un equipo de red.
>
> A ver si me explico.
> Cuando localmente solicitamos HB_Curdrive... todo correcto, devuelve la
> letra de la unidad.
> Cuando tenemos un acceso directo que apunta a una unidad de red...
> "X:MiCarpetaMiAplicacion.exe"... todo continua correcto, devuelve la letra
> "X" correctamente.
>
> El problema está en si ese acceso directo apunta a un equipo de red sin
> unidad asignada...
> "MiEquipoMiCarpetaMiAplicacion.exe"
>
> Aquí­, CurDrive de xHarbour devuelve ""... lo veo lógico, ¿No???
> PERO, HB_Curdrive devuelve "A" ¿?¿? y eso???
>
> Sabiendo eso, lo puedo sortear y si me devuelve "A"... le cambio por "",
> pero no encuentro que el resultado devuelto por HB_CurDrive sea el correcto,
> no creeis????
>
>
> Un Saludo,
> Xevi.
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 7765 (20121204) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>
Avatar de Usuario
XeviCOMAS
Mensajes: 585
Registrado: Sab Mar 12, 2011 8:16 pm

Curdrive() HB_Curdrive()

Mensaje por XeviCOMAS »

José Alfonso...
Hecho!!
#ifdef __HARBOUR__
FUNCTION CurDrive()
RETURN Left( FilePath( HB_ProgName() ), 1 )
#endif
Asunto arreglado!!!
Un Saludo,
Xevi.
"José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> ha escrit al
missatge del grup de discussió: [email=50c09ba1@svctag-j7w3v3j....]50c09ba1@svctag-j7w3v3j....[/email]
> Hola
>
> ¿Damos con una solución para este galimatías del CurDrive()?
>
> Se me ocurre hacer una función sustitutiva y meterla en nuestros
> proyectos:
>
> FUNCTION CurDrive()
> RETURN Left( FilePath( HB_ProgName() ), 1 )
>
> Saludos
>
> Alf+.
>
> El 05/12/2012 10:32, Xevi escribió:
>> Estoy teniendo problemas con Harbour... por culpa de esta función.
>>
>> Si bien HB_Curdrive() funciona correctamente cuando se trata de una
>> unidad
>> lógica o virtual, no pasa lo mismo cuando se trata de un acceso directo
>> apuntando a un equipo de red.
>>
>> A ver si me explico.
>> Cuando localmente solicitamos HB_Curdrive... todo correcto, devuelve la
>> letra de la unidad.
>> Cuando tenemos un acceso directo que apunta a una unidad de red...
>> "X:MiCarpetaMiAplicacion.exe"... todo continua correcto, devuelve la
>> letra
>> "X" correctamente.
>>
>> El problema está en si ese acceso directo apunta a un equipo de red sin
>> unidad asignada...
>> "MiEquipoMiCarpetaMiAplicacion.exe"
>>
>> Aquí, CurDrive de xHarbour devuelve ""... lo veo lógico, ¿No???
>> PERO, HB_Curdrive devuelve "A" ¿?¿? y eso???
>>
>> Sabiendo eso, lo puedo sortear y si me devuelve "A"... le cambio por "",
>> pero no encuentro que el resultado devuelto por HB_CurDrive sea el
>> correcto,
>> no creeis????
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>>
>> __________ Información de ESET NOD32 Antivirus, versión de la base de
>> firmas de virus 7765 (20121204) __________
>>
>> ESET NOD32 Antivirus ha comprobado este mensaje.
>>
>> http://www.eset.com
>>
>>
>>
>>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de
> firmas de virus 7773 (20121206) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 7773 (20121206) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
Un Saludo,
Xevi.
Avatar de Usuario
XeviCOMAS
Mensajes: 585
Registrado: Sab Mar 12, 2011 8:16 pm

Curdrive() HB_Curdrive()

Mensaje por XeviCOMAS »

Al compilar el proyecto con xharbour me da error al compilar... por lo que
la dejo así...
#ifdef __XHARBOUR__
#else
FUNCTION CurDrive()
RETURN Left( FilePath( HB_ProgName() ), 1 )
#endif
Un Saludo,
Xevi.
"Xevi" <xevicomas@gmail.com> ha escrit al missatge del grup de discussió:
50c0b8ef$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> José Alfonso...
>
> Hecho!!
> #ifdef __HARBOUR__
> FUNCTION CurDrive()
> RETURN Left( FilePath( HB_ProgName() ), 1 )
> #endif
>
> Asunto arreglado!!!
>
>
> Un Saludo,
> Xevi.
>
>
> "José Alfonso Suárez Moreno" <jasm.quitaesto@tpvsoft.com> ha escrit al
> missatge del grup de discussió: [email=50c09ba1@svctag-j7w3v3j....]50c09ba1@svctag-j7w3v3j....[/email]
>> Hola
>>
>> ¿Damos con una solución para este galimatías del CurDrive()?
>>
>> Se me ocurre hacer una función sustitutiva y meterla en nuestros
>> proyectos:
>>
>> FUNCTION CurDrive()
>> RETURN Left( FilePath( HB_ProgName() ), 1 )
>>
>> Saludos
>>
>> Alf+.
>>
>> El 05/12/2012 10:32, Xevi escribió:
>>> Estoy teniendo problemas con Harbour... por culpa de esta función.
>>>
>>> Si bien HB_Curdrive() funciona correctamente cuando se trata de una
>>> unidad
>>> lógica o virtual, no pasa lo mismo cuando se trata de un acceso directo
>>> apuntando a un equipo de red.
>>>
>>> A ver si me explico.
>>> Cuando localmente solicitamos HB_Curdrive... todo correcto, devuelve la
>>> letra de la unidad.
>>> Cuando tenemos un acceso directo que apunta a una unidad de red...
>>> "X:MiCarpetaMiAplicacion.exe"... todo continua correcto, devuelve la
>>> letra
>>> "X" correctamente.
>>>
>>> El problema está en si ese acceso directo apunta a un equipo de red sin
>>> unidad asignada...
>>> "MiEquipoMiCarpetaMiAplicacion.exe"
>>>
>>> Aquí, CurDrive de xHarbour devuelve ""... lo veo lógico, ¿No???
>>> PERO, HB_Curdrive devuelve "A" ¿?¿? y eso???
>>>
>>> Sabiendo eso, lo puedo sortear y si me devuelve "A"... le cambio por
>>> "",
>>> pero no encuentro que el resultado devuelto por HB_CurDrive sea el
>>> correcto,
>>> no creeis????
>>>
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>>
>>>
>>> __________ Información de ESET NOD32 Antivirus, versión de la base de
>>> firmas de virus 7765 (20121204) __________
>>>
>>> ESET NOD32 Antivirus ha comprobado este mensaje.
>>>
>>> http://www.eset.com
>>>
>>>
>>>
>>>
>>
>>
>> __________ Información de ESET NOD32 Antivirus, versión de la base de
>> firmas de virus 7773 (20121206) __________
>>
>> ESET NOD32 Antivirus ha comprobado este mensaje.
>>
>> http://www.eset.com
>>
>>
>>
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de
> firmas de virus 7773 (20121206) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de
> firmas de virus 7774 (20121206) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 7774 (20121206) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
http://www.eset.com
Un Saludo,
Xevi.
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Curdrive() HB_Curdrive()

Mensaje por jlalin »

Xevi,
> Al compilar el proyecto con xharbour me da error al compilar... por lo que
> la dejo así­...
Así­ "escondes" el problema hasta que con Harbour o alguna librerí­a que en
uses en el futuro y tenga la misma función te pase lo mismo.
Cambia el nombre por XE_CurDrive o lo que prefieras y así­ lo solucionas
definitivamente.
Saludos,
José Lalí­n
Responder