VB到Delphi的翻译
我正在将VB6代码翻译成Delphi7) 我如何翻译以下内容 函数funcSetupCallBack是在外部in DLL中定义的VB到Delphi的翻译,delphi,vb6,Delphi,Vb6,我正在将VB6代码翻译成Delphi7) 我如何翻译以下内容 函数funcSetupCallBack是在外部in DLL中定义的 Public Declare Function funcSetUpCallBack& Lib "BUICAP32.DLL" (ByVal nEvent&, ByVal CallBackFunction&) 这是在主窗体中调用funcSetupCallBack函数的方式 if ( MICRCallBackYN = true ) //If MIC
Public Declare Function funcSetUpCallBack& Lib "BUICAP32.DLL" (ByVal nEvent&, ByVal CallBackFunction&)
这是在主窗体中调用funcSetupCallBack函数的方式
if ( MICRCallBackYN = true ) //If MICR call back is turned on in setup screen and using 4120
then
begin
if ( sScannerType = 'DCC BX7200' )
then
begin
Ret := funcSetUpCallBack( TS200_CB_EVENT_MICR, MICRCallBack ); //Turn on MICR Callback
Ret := BUICSetParam( CFG_SORT_MODE, 8 );
end;
if ( sScannerType = 'Teller Scanner Ts440' )
then
begin
Ret := funcSetUpCallBack( TS200_CB_EVENT_VBMICR, MICRCallBack ); //Turn on MICR Callback VB
end;
//ibatchitemsCB = 0 '//Initialize Callback item counter to 0 When using the 'Sort Every Fouth Document Logic'
end
else
begin
Ret := funcSetUpCallBack( TS200_CB_EVENT_VBMICR, 0 ); //Turn off MICR Callback
Ret := BUICSetParam( CFG_SORT_MODE, 6 );
end;
这是MICRCallBack函数的定义
Public Function MICRCallBack(ByVal dwReason&) As Long
Dim Ret As Long, i As Long, iDocument As Long
Dim j As Integer
Dim iScannerType As Long
Dim strMICR As String * 255, ltr As String, tst As String
iDocument = funcTS200GetMICR(strMICR, 100)
'// Get the MICR
'iScannerType = BUICGetParam(CFG_MISC_SCANNER_TYPE)
'Every Fourth Document put in option pocket
' If ibatchitemsCB > 0 And ibatchitemsCB Mod 4 = 0 Then Ret = funcSetPocket&(1) Else Ret = funcSetPocket&(0)
' ibatchitemsCB = ibatchitemsCB + 1
'If Check Upside down put in option Pocket
If iScannerType = 7200 Then
Ret = BX7200SetPocket(iDoccument, 0)
For i = 1 To 10
ltr = Mid(strMICR, i, 1)
If Asc(ltr) = 0 Then tst = tst & ltr
Next i
If Len(tst) > 5 Then Ret = BX7200SetPocket(iDocument, 1) Else Ret = BX7200SetPocket(iDocument, 0)
Else
For i = 1 To 10
ltr = Mid(strMICR, i, 1)
If Asc(ltr) = 0 Then tst = tst & ltr
Next i
If Len(tst) > 5 Then Ret = TS400SetPocket(1) Else Ret = TS400SetPocket(0)
End If
MICRCallBack = 1
End Function
所以问题是,我如何才能声明一个Delphi函数作为外部DLL中声明的另一个函数的参数
非常感谢您的帮助和时间。为回调声明函数类型,然后在参数中使用该类型,例如:
type
SetUpCallBack = function(dwReason: DWORD): Integer; stdcall;
function funcSetUpCallBack(nEvent: Integer; CallBackFunction: SetUpCallBack): Integer; stdcall; external 'BUICAP32.DLL';
然后您可以传入Delphi函数:
function MICRCallBack(dwReason: DWORD): Integer; stdcall;
begin
// do something...
Result := 1;
end;
...
Ret := funcSetUpCallBack( TS200_CB_EVENT_MICR, @MICRCallBack ); //Turn on MICR Callback
...
Ret := funcSetUpCallBack( TS200_CB_EVENT_VBMICR, @MICRCallBack ); //Turn on MICR Callback VB
...
Ret := funcSetUpCallBack( TS200_CB_EVENT_VBMICR, nil ); //Turn off MICR Callback
你知道Delphi吗?是的,但我不知道如何声明这种类型的函数调用,所以请阅读文档并试一试。