Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[13198] Re:Re:델파이7로된 카드체크 샘플이 2010에서는 안되는 이유가 뭘까요
박지훈.임프 [cbuilder] 2226 읽음    2010-04-23 09:56
델파이 구버전 소스를 델파이 2010이나 2009 등의 유니코드화된 버전으로 컨버팅할 때 몇가지 접근 방법이 있는데, 그중 String을 AnsiString으로 바꾸는 경우에는 Char도 AnsiChar로 바꿔야 하며, PChar도 PAnsiChar로 바꿔야 합니다.


장성호 님이 쓰신 글 :
: 포스관련 프로그램을 전혀 해본적이 없어서 업무적인 부분은 잘 모르겠구요
:
: 아래 소스가 Delphi7과 델파이2010과 근본적으로 다른것이 하나 있는데요
:
: Delphi7에서는 String이 AnsiString을 나타냅니다.
: 하지만 Delphi2010에서는 String이 UnicodeString이 됩니다.
:
: 소스에서 String이라 선언된 부분은
: AnsiString으로 바꿔서 한번 테스트 해보세요
:
: 그럼..
:
: 디오시 님이 쓰신 글 :
: : 이번에 포스관련 카드승인  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));

+ -

관련 글 리스트
13196 델파이7로된 카드체크 샘플이 2010에서는 안되는 이유가 뭘까요 디오시 2133 2010/04/23
13199     Re:감사합니다. 해결했어요..... 디오시 1979 2010/04/23
13197     Re:델파이7로된 카드체크 샘플이 2010에서는 안되는 이유가 뭘까요 장성호 2813 2010/04/23
13198         Re:Re:델파이7로된 카드체크 샘플이 2010에서는 안되는 이유가 뭘까요 박지훈.임프 2226 2010/04/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.