消息关闭
    暂无新消息!
在Delphi中的执行代码是这样的

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Uni_FormatEdit_Ex;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Chb_A1: TCheckBox;
    E_UserNo: TFormatditEX;
    E_Count: TFormatditEX;
    E_Money: TFormatditEX;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
function Tr_key( UserID , count , kwh : integer ) : pchar ;
far ; external 'MCMKEY.dll' Name 'Tr_key' ;
function Tr_key_A1( UserID , count , kwh : integer ) : pchar ;
far ; external 'MCMKEY.dll' Name 'Tr_key_A1' ;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
  UserId , Count , Money : Integer;
  ps : array[0..8] of Char;
begin
  UserId := StrToInt(E_UserNo.Text);
  Count  := StrToInt(E_Count.Text);
  If Not Chb_A1.Checked then
    Money  :=   Round( StrToFloat(E_Money.Text) * 100 )
  else Money := Round( StrToFloat(E_Money.Text) );

  If Chb_A1.Checked then
    StrPCopy(ps, Copy( Tr_key_A1(UserId,Count,Money),0,8 ))
  else
    StrPCopy(ps, Copy( Tr_key(UserId,Count,Money),0,8 ));
  Caption := ps;  
  ShowMessage(ps);
end;
end.


我用VB调用如下所示:

Public Declare Function Tr_key_A1 Lib "MCMKEY.dll" (ByVal YHBH As String, ByVal GDCS As Integer, ByVal GDL As Single) As Long
Public Declare Function Tr_key Lib "MCMKEY.dll" (ByVal YHBH As String, ByVal GDCS As Integer, ByVal GDL As Single) As Long

Private Sub cmd_CALC_Click()
Txt_Result.Text = ""
Dim result As String
result = Tr_key_A1(Txt_YHH.Text, CInt(Txt_GDCS.Text), CSng(Txt_GDJE.Text))
Txt_Result.Text = result
End Sub


返回的结果不一样 请问有Delphi开发的经验给看一下 哪里有问题 谢谢!

5个回答

︿ 3
应该是:
Public Declare Function Tr_key_A1 Lib "MCMKEY.dll" (ByVal UserID As Integer, ByVal count As Integer, ByVal kwh As Integer) As String
Public Declare Function Tr_key Lib "MCMKEY.dll" (ByVal UserID As Integer, ByVal count As Integer, ByVal kwh As Integer) As String
︿ 2
问题已经解决了,是动态库的问题 Delphi开发的动态库。 现在改过了动态库就好了。