Delphi - Ayuda Extrema con llamada a DLL

 
Vista:

Ayuda Extrema con llamada a DLL

Publicado por shannon devenish (31 intervenciones) el 06/11/2005 01:16:59
estoy tratando de realizar una llamada a una dll pero me genera el siguiente error NO SE ENCUENTRA EL PUNTO DE ENTRADA DEL PROCEDIMIENTO SENDNCMD EN LA BIBLIOTECA DE VINCULOS DINAMICOS FPCTRL.DLL

eso me tiene de cabeza por favor les agradezco cualquier ayuda

les describo las variables del entorno

PROGRAMAS
Windows XP
Delphi 7

DECLARACION Y LLAMADA
function SendnCmd( a,b :integer; buffer :pchar):integer; stdcall; external 'FPCTRL.DLL';

procedure TForm1.Button2Click(Sender: TObject);
var
buf :string ;
status,eerror,lret:integer;
begin
Buf := '';
// ----+----1----+----2----+----3----+----4----+----5----+----6----+----7
Buf := Buf + '80This is a sample of N.Fiscal 1' + chr($13) + chr($10) ;
Buf := Buf + '80Document. You can issue 1' + chr($13) + chr($10) ;
Buf := Buf + '80some original documents as 1' + chr($13) + chr($10) ;
Buf := Buf + '80non fiscal by using texit 1' + chr($13) + chr($10) ;
Buf := Buf + '81printing command. 1' + chr($13) + chr($10) ;

SendNCmd(status,eerror, pchar(Buf))
end;

NOTA: lo tengo en Visual basic y corre sin problemas
Declare Function SendCmd Lib "FPCTRL.DLL" (status As Long, error As Long, ByVal cmd As String) As Long

Private Sub Non_Fiscal_Click()
Dim cmd As String
Dim msg As String
Dim bRet As Boolean
Dim status As Long
Dim error As Long
ListOut ("**Non-Fiscal Document issuing**")
Buf = ""
' // ----+----1----+----2----+----3----+----4----+----5----+----6----+----7
Buf = Buf + "80This is a sample of N.Fiscal 1" + Chr$(13) + Chr$(10)
Buf = Buf + "80Document. You can issue 1" + Chr$(13) + Chr$(10)
Buf = Buf + "80some original documents as 1" + Chr$(13) + Chr$(10)
Buf = Buf + "80non fiscal by using texit 1" + Chr$(13) + Chr$(10)
Buf = Buf + "81printing command. 1" + Chr$(13) + Chr$(10)

lRet = SendNCmd(status, error, Buf)

msg = "SendNCmd = " + Str$(lRet) + " status = " + Hex$(status) + " error = " + Hex$(error)
ListOut (msg)

End Sub

??? alguien podra ayudarme??
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

RE:Ayuda Extrema con llamada a DLL

Publicado por Edgar Rodriguez (172 intervenciones) el 09/11/2005 15:37:18
prueba cambiando stdcall por cdecl,

otra cosa, puedes cambiar chr($13) + chr($10) por #13#10, además tienes separada toda la cadena con punto y coma al final, cámbialo por un más (+) para concatenar el bufer... quedaría más corto así...

Buf := Buf + '80This is a sample of N.Fiscal 1' #13#10+
'80Document. You can issue 1' #13#10+
'80some original documents as 1'#13#10+
'80non fiscal by using texit 1'#13#10+
'81printing command. 1' #13#10 ;

además como es una función, puedes definir una variable Longint para cacharla. p.e.

Mi_variable_larga := SendNCmd(status,eerror, pchar(Buf));

así puedes ver qué retorna... por último, a pesar que puede funcionar lo que haces... es mejor llamar las DLLs con LoadLibrary... y para liberar FreeLibrary...

Además veo que tienes ByVal en VB, en delphi (pascal) se toma como referencia (creo) y deberás poner la palabra var antes... es decir...

function SendnCmd( a,b :integer; var buffer :pchar):integer; cdecl; external 'FPCTRL.DLL';

Disculpa si tengo errores, estoy fuera de mi máquina...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Extrema con llamada a DLL

Publicado por shannon (31 intervenciones) el 11/11/2005 05:07:20
pues probe todo lo que me dijo pero nada sigo con el mismo error?????? alguna otra idea???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar