Q&A

  • [긴급질문]C로 작성한 Dll과의 호환...
C로 작성된 Dll에서의 Function의 정의입니다.



void SeedEncRoundKey(DWORD *pdwRoundKey, BYTE *pbUserKey)

void SeedEncrypt(BYTE *pbData, DWORD *pdwRoundKey)



이렇게 정의된 Function을 다음과 같이 불러 사용합니다.



.

.

type

PDWORD = ^DWORD;

.

.

Procedure SeedEncrypt(pbData:PAnsiChar;pdwRoundKey:PDWORD);cdecl;

Procedure SeedEncRoundKey(pdwRoundKey:PDWRD;pbUserKey:PCHAR);cdecl;

.

.

implementation

Procedure SeedEncrypt; external 'seedx.dll' name 'SeedEncrypt';

Procedure SeedEncRoundKey; external 'seedx.dll' name 'SeedEncRoundKey';

.

.

function TForm1.EncryptSave: Boolean;

var

vUserKey:PCHAR;

pKey :PDWORD;

pData :PAnsiChar;



SaveFile:TextFile;

begin

// UserKey는 User Define

vUserKey := 'AAAA';



new(pKey);



if pKey <> Nil then

begin

AssignFile(SaveFile, FileName);

Rewrite(SaveFile);



// Key 얻기

SeedEncRoundKey(pKey, vUserKey); ------> 여기에서 Page 오류가 발생합니다...



// 암호화

pData := pChar(copy(Memo1.Text, 1, 128));

SeedEncrypt(pData, Pkey); ------> 여기에서 Page 오류가 발생합니다...

write(SaveFile, pData);



dispose(pKey);

end

else

showmessage('pointer is null!');



closeFile(SaveFile);



Modified := False;

Result := True;

end;



이렇게 하니 Page오류가 발생하는 군요...



고수님들의 도움바랍니다...



0  COMMENTS