Page 1 of 1

Cargar funcion de una DLL

Posted: Mon Jan 01, 2018 2:51 pm
by 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.

Re: Cargar funcion de una DLL

Posted: Mon Jan 01, 2018 6:53 pm
by 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!!!

Re: Cargar funcion de una DLL

Posted: Mon Jan 01, 2018 8:03 pm
by jfgimenez
Xevi,

mira la clase TFileOperationDlg

Re: Cargar funcion de una DLL

Posted: Mon Jan 01, 2018 9:50 pm
by XeviCOMAS
José,

PERFECTO!!!

Gracias.

Re: Cargar funcion de una DLL

Posted: Mon Jan 01, 2018 11:09 pm
by 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.

Re: Cargar funcion de una DLL

Posted: Thu Jan 04, 2018 1:02 pm
by jfgimenez
XeviCOMAS wrote: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 ;-)

Re: Cargar funcion de una DLL

Posted: Thu Jan 04, 2018 2:44 pm
by 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!!!