Q&A

  • 배열과 포인터, 그리고 파라미터 전달
VC++ dll source를 아래와 같이 고친 후 프로그래밍을 하였습니다.

VC++ source:

WORD CALL MPS_InCmm( BYTE, DWORD, WORD, BYTE *,WORD *);



Delphi:

MPS_InCmm: function(CplNum: BYTE;

Command: Cardinal;

DataLg: Word;

pDataBuf: PBYTE;

SW1SW2: PWord): Word; cdecl {$IFDEF WIN32} stdcall {$ENDIF};



그리고 난 후, 델파이의 editbox에 있는 데이터들을 serial로 보내는 과정인데 아래와 같이 코딩을 하였습니다.



GetMem(Data, 256);

GetMem(StatusByte, 32);

j := 1;



for i := 1 to (Length(memoDATA.Lines.Text) div 2) do

begin

tempString := Byte(StrToInt('$' + Copy(memoDATA.Lines.Text, j, 2)));

//memo의 string을 두 개씩 합하여 한 바이트로 설정

Send_Data[i] := @tempString;

j := j + 2;

end;



Data := @Send_Data;



RET := MPS_InCmm(Coupler, Cardinal(StrToInt('$' + APDU)), Word(StrToInt('$' + editLC.Text)), Data, StatusByte);



memoDATA.Lines.Text에 있는 데이터들을 바이트단위로 전송을 해야하는데, 함수에서는 pointer로 넘겨줘야 하기 때문에 for loop를 써서, 배열에 저장한 후, 배열의 주소를 넘겨줬다고 생각을 하는데..

아마도 Data parameter 전달이 잘못 된 듯 생각이 됩니다.



코딩에 잘못이 있는 것 같은데, 아시는 계시면 수정 좀 부탁드립니다.

감사합니다.



0  COMMENTS