DLL vs LIB
Posted: Wed Aug 31, 2016 3:57 pm
Grupo,
Hace muchisimo tiempo que usando clipper logre hace una libreria, encadenarla a mis PRG y luego usarla, ahora con el nacimiento de HMG, he leido sobre DLL mi pregunta es:
Cual es la diferencia entre DLL y LIB?
Cuando se debe usar LIB y cuando una DLL
Hay ventas de una sobre la otra?
Y por terminar,
Ejemplo,
LnCustomerId :=GetNextNumber("customer_id")
*------------------------------------------------------------------------------*
FUNCTION GetNextNumber(PsModule)
*------------------------------------------------------------------------------*
LdDateSQL := "DATE('NOW')"
LsTimeSQL := "TIME('NOW','LOCALTIME')"
LsModule := C2SQL(PsModule)
GnNextNumber := 0
IF .NOT. ConectMe()
MsgExclamation ("No me pude conectar a la base de datos")
RETURN NIL
ELSE
GsRead := "SELECT Module, Last_Number, "
GsRead += "(Last_Number + Sequence_Count) AS [Next_Number] "
GsRead += "FROM Folios WHERE LOWER(Module) = LOWER(&LsModule)"
IF TryToLock()
aTableNextNum := sql(oDataBase,GsRead)
IF LEN(aTableNextNum) = 0
MsgExclamation("No se encontro el modulo para la numeracion")
DeleteFileLock()
RETURN NIL
EndIf
GnNextNumber := aTableNextNum[1,3]
GsQueryInsert := "UPDATE Folios SET "
GsQueryInsert += "Last_Number = (Last_Number + Sequence_Count), "
GsQueryInsert += "Modify_Date = "+LdDateSQL +", "
GsQueryInsert += "Modify_Time = "+LsTimeSQL
GsQueryInsert += "WHERE LOWER(Module) = LOWER(&LsModule)"
IF .NOT. BeforeSave(GsQueryInsert)
MsgExclamation ("Error al tratar de obtener el folio siguiente.")
ENDIF
DeleteFileLock()
ENDIF
ENDIF
RETURN ( VAL(GnNextNumber ))
Pregunta: Como convierto esa pequea function en DLL y como se debe de llamar en un PRG.
De antemano agradezco la ayuda.
Hace muchisimo tiempo que usando clipper logre hace una libreria, encadenarla a mis PRG y luego usarla, ahora con el nacimiento de HMG, he leido sobre DLL mi pregunta es:
Cual es la diferencia entre DLL y LIB?
Cuando se debe usar LIB y cuando una DLL
Hay ventas de una sobre la otra?
Y por terminar,
Ejemplo,
LnCustomerId :=GetNextNumber("customer_id")
*------------------------------------------------------------------------------*
FUNCTION GetNextNumber(PsModule)
*------------------------------------------------------------------------------*
LdDateSQL := "DATE('NOW')"
LsTimeSQL := "TIME('NOW','LOCALTIME')"
LsModule := C2SQL(PsModule)
GnNextNumber := 0
IF .NOT. ConectMe()
MsgExclamation ("No me pude conectar a la base de datos")
RETURN NIL
ELSE
GsRead := "SELECT Module, Last_Number, "
GsRead += "(Last_Number + Sequence_Count) AS [Next_Number] "
GsRead += "FROM Folios WHERE LOWER(Module) = LOWER(&LsModule)"
IF TryToLock()
aTableNextNum := sql(oDataBase,GsRead)
IF LEN(aTableNextNum) = 0
MsgExclamation("No se encontro el modulo para la numeracion")
DeleteFileLock()
RETURN NIL
EndIf
GnNextNumber := aTableNextNum[1,3]
GsQueryInsert := "UPDATE Folios SET "
GsQueryInsert += "Last_Number = (Last_Number + Sequence_Count), "
GsQueryInsert += "Modify_Date = "+LdDateSQL +", "
GsQueryInsert += "Modify_Time = "+LsTimeSQL
GsQueryInsert += "WHERE LOWER(Module) = LOWER(&LsModule)"
IF .NOT. BeforeSave(GsQueryInsert)
MsgExclamation ("Error al tratar de obtener el folio siguiente.")
ENDIF
DeleteFileLock()
ENDIF
ENDIF
RETURN ( VAL(GnNextNumber ))
Pregunta: Como convierto esa pequea function en DLL y como se debe de llamar en un PRG.
De antemano agradezco la ayuda.