Clarion - string de una dll Externa de C++

 
Vista:

string de una dll Externa de C++

Publicado por Carlos Hernandez (1 intervención) el 28/07/2012 00:24:37
Hola a todos, estoy desarollando una aplicación que interactura con un SDK de Adminpaq
segun lo que he leido los string de C++ deben de clararse como cstring en clarion.

si declaro como cstring la funcion

Module('mgw_sdk.lib')
FinicializaSDK(),LONG,RAW,PASCAL
fError(long aNumError, *cstring aMensaje, long aLen ),Raw,Pascal
FTerminaSDK(),LONG,RAW,PASCAL
fAbreEmpresa(*cstring aDirectorioEmpresa),long,RAW,PASCAL
fCierraEmpresa(),RAW,PASCAL
fAltaCteProv(ULONG,Type),Long,RAW,PASCAL
fSetDatoCteProv(String aCampo, String aValor),Long,Raw,Pascal
fGuardaCteProv(),Long,Raw,Pascal
fInsertaCteProv(),Long,Raw,Pascal
fPosMovimientoBOF(),Long,Raw,Pascal
fPosPrimerCteProv(),Long,Raw,Pascal
fBuscaCteProv (String aCodCteProv),Long,Raw,Pascal
fLeeDatoCteProv(String aCampo, String aValr, Long aLen),Long,Raw,Pascal
End


luego en una ventana invoco la funcion
la variable lDir tambien es local cstring de 120 caracteres.
me marca un error cuando llega a esa linea de Access:Violation y no se que es lo que me este dando ese error, si cambio el tipo de datos de cstring a string compila bien la aplicacion y ya no me da este error de access violation pero el SDK me regresa un error que la empresa no existe como si se fuera en blanco el parametro lDir ya lo verifique antes de llegar a la funcion y trae valor
alguien tiene una idea que es lo que este pasando.

cuando me tira el errror de access violation cuando uso cstring me hace referencia a una Dll
cc3250mt.dll como que tiene un desboramiento de memoria.

LError=FInicializaSDK()
If LError<>0 Then
Stop()
Else
LError=FTerminaSDK()
End
lDir='C:\compacw\empresas\demo'
lError=fAbreEmpresa(lDir)
If LError<>0 Then
fError(lerror,aMensaje,350)
Message(lerror&' '&amensaje)
End
fCierraEmpresa()
LError=FTerminaSDK()
If lError <> 0 Then
Message('Hubo un error al Guardar registro del proveedor, intentelo de nuevo')
Else
Message('Cliente registrado')
End
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder