c에서 만든 DLL을 델에서 불러 값을 받아야 합니다.
c++로 이미 되어서 잘 돌아 가는건데.. 델로 바꿔줘야 합니다.
델은 잘 안써본 초보라 고수님들의 도움들 바랍니다.
DLL안의 참조 함수의 형식은 아래와 같구요
int findAlike(int category, BYTE *qstr, int reqnum, BYTE ***name, int **score);
그런데 문제는 델에서 byte ***name 과 int **score를 어떻게 해야 하는가요?
일단 제가 한거는 이렇게 했는데.. 안되더군요
-------------------------------------------------------------------------------------
var
name : array of Pbyte;
score : array of Pinteger;
sendstr : string;
begin
result := findAlike(-1, PByte(sendstr), 10, @name, @score);
for i := 0 to result do
begin
memo1.Lines.Add(inttostr(result)+' '+inttostr(integer(score[i]))+' '+string(name[i]));
end;
end;
----------------------------------------------------------------------------------------
// 참고로 잘되는 c++로 만든 것 입니다.
char tbuf[32];
BYTE **name;
int *score, i,
results = findAlike(-1, (BYTE *)((LPCSTR)m_qstr),
10, &name, &score);
m_results = "";
if (results)
{
for (i = 0; i < results; i++)
{
wsprintf(tbuf, "%dt", score[i]);
m_results += tbuf;
m_results += (LPCTSTR)name[i];
m_results += "rn";
//free(name[i]);
}
//free(name);
//free(score);
}
꼭 도움 바랍니다.. 그럼 수고 하세요!!