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.

Cargar funcion de una DLL

Foro público de Xailer en español
Responder
Avatar de Usuario
XeviCOMAS
Mensajes: 586
Registrado: Sab Mar 12, 2011 8:16 pm

Cargar funcion de una DLL

Mensaje por XeviCOMAS »

Cómo puedo cargar una función de una DLL???

En Harbour disponemos de FRename(), FCopy(), pero no tenemos o no he sabido encontrar FMove().

Necesito de la función MoveFile(), que está incluida en la DLL kernel32

Como puedo hacer esto en Xailer???

DLL32 FUNCTION MoveFile( cOldName AS LPSTR, cNewName AS LPSTR ) ;
AS LONG PASCAL FROM "MoveFileA" LIB "kernel32.dll"


Gracias.
Un Saludo,
Xevi.
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Re: Cargar funcion de una DLL

Mensaje por Carlos Ortiz »

Si incluís en el proyecto las clipper tool tenes FileMove(), no uso harbour por lo tanto no se ni como se llama el .a de las CT

Feliz 2018 Xevi y resto del foro!!!
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Cargar funcion de una DLL

Mensaje por jfgimenez »

Xevi,

mira la clase TFileOperationDlg
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
XeviCOMAS
Mensajes: 586
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Cargar funcion de una DLL

Mensaje por XeviCOMAS »

José,

PERFECTO!!!

Gracias.
Un Saludo,
Xevi.
Avatar de Usuario
XeviCOMAS
Mensajes: 586
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Cargar funcion de una DLL

Mensaje por XeviCOMAS »

José,

Si bien funciona correctamente, el Logdebug de Xailer me lanza un mensaje de error cuando :nAction := foMOVE

shell\osshell\lmui\ntshrui\dll\shrengine.cpp(1487)\ntshrui.dll!6B883D65: (caller: 6B87F284) ReturnHr(2) tid(2550) 80004005 Error no especificado

el código que utilizo...

WITH OBJECT TFileOperationDlg():New()
:aFrom := { AppData:cRuta+AppData:cCodiEmpresa + "\ALBAR" }
:aTo := { AppData:cRuta+::oEditCodi:cText + "\ALBAR" }
:nAction := foMOVE //foCOPY //foDELETE //foRENAME
:lNoConfirmMkDir := .T.
:lSilent := .T.
:Create()
:Run()
END


Con nAction := foCOPY no me lanza ningún mensaje el logdebug()

Gracias.

Un Saludo,
Xevi.
Un Saludo,
Xevi.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Cargar funcion de una DLL

Mensaje por jfgimenez »

XeviCOMAS escribió:Si bien funciona correctamente, el Logdebug de Xailer me lanza un mensaje de error cuando :nAction := foMOVE

shell\osshell\lmui\ntshrui\dll\shrengine.cpp(1487)\ntshrui.dll!6B883D65: (caller: 6B87F284) ReturnHr(2) tid(2550) 80004005 Error no especificado
Esto se ha hablado ya muchas veces. No es ningún error de Xailer, y probablemente tampoco sea un error como tal. El IDE de Xailer actúa como un debugger a todos los efectos, y recibe todos los mensajes que se envíen a través de OutputDebugString() desde cualquier parte dentro del mismo proceso. Y desde cualquier parte significa exactamente eso: un driver de impresora, los driver de la tarjeta de video, el propio kernel de windows, etc..

De hecho, el mensaje que recibes es algún aviso de depuración que se han dejado ahí los de MS. Es lo mismo que si tú te dejas algún LogDebug() en tu programa y alguien lo ejecuta con un debugger: verá todos los mensajes que envíes con LogDebug(). Si esos mensajes son de error o no, pues dependerá de lo que considere el que los ha puesto ahí. Lo más razonable sería pensar que si de verdad fuera un error, lo estaría mostrando de otra forma, no ahí, porque cuando el programa se ejecuta normalmente (sin debugger), nadie puede ver esos mensajes. Por lo tanto, yo no les haría ningún caso. Bueno, de hecho es que no les hago ningún caso, y mira que veo montones de ellos a diario ;-)
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
XeviCOMAS
Mensajes: 586
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Cargar funcion de una DLL

Mensaje por XeviCOMAS »

José,

gracias por tu respuesta.

Si, se que se ha comentado en otras ocasiones, pero siempre me "choca" ver mensajitos en la ventanita del Debugger.

No por nada más, porque por lo del funcionar, funciona correctamente!!!
Un Saludo,
Xevi.
Responder