디오시 님이 쓰신 글 :
: 이번에 포스관련 카드승인 Sample를 Delphi7소스로 받았습니다.
: 근데 Delphi7에서 컴파일 하면 문제가 없는데 2010에서는 다음 문장이 에러는 없는데 리턴값이 안들어오네요
: 유니코드때문에 문법을 바꿔야 하는거 같습니다.
: NicePosSend(Byte(pchar(ip)),port,Byte(pchar(SndData)),Byte(pchar(SndSignData)),Byte(RecvData));
: 에서 Byte형을 보내기위해 String형을 Byte(PChar(ip)) 여기가 문제인거 같은데 어찌바꿔야 할까요.
: Delphi7실행파일과 2010실행파일 소스도 올려드립니다.
:
: unit Unit1;
:
: interface
:
: uses
: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
: Dialogs, StdCtrls;
:
: type
: TForm1 = class(TForm)
: Edit1: TEdit;
: Label1: TLabel;
: Label2: TLabel;
: Edit2: TEdit;
: Button1: TButton;
: procedure Button1Click(Sender: TObject);
: private
: { Private declarations }
: public
: { Public declarations }
: end;
:
: function NicePosSend(btNiceIP: Byte;iNicePort: integer; sSendData:Byte; sSendSignData: Byte; sReceveData: Byte): integer; stdcall; external 'NicePosV205.dll' name 'Pos_Send';
: var
: Form1: TForm1;
:
: implementation
:
: {$R *.dfm}
:
: procedure TForm1.Button1Click(Sender: TObject);
: var ip: string;
: port: integer;
: SndData: string;
: SndSignData: string;
: RecvData: pchar;
: sRecvData: string;
: aryRecvData: array[0..450] of char;
: nRet: integer;
: Header : String;
: Card : String;
: Pay,Etc : String;
:
: begin
: ip := '211.33.136.1';
: port := 40777;
: nRet := 0;
: FillChar(aryRecvData,Sizeof(aryRecvData),#20);
: RecvData := aryRecvData;
: SndData := '0256TAX23933000020323041054020020H1';
:
: // nRet에서 리턴값이 Delphi7에는 들어오는데 2010에서는 값이 안들어오네요
: nRet := NicePosSend(Byte(pchar(ip)),port,Byte(pchar(SndData)),Byte(pchar(SndSignData)),Byte(RecvData));
|