|
코드가드를 돌리면...
Error 00001. 0x820000 (Thread 0x0D44):
Function failure:
SysGetMem(0x1A4F80D [27588621])=0x00000000
Call Tree:
0x01A4DD5A(=BITMAGENET.DLL:0x01:04CD5A) system.pas#2648
0x01AA47F7(=BITMAGENET.DLL:0x01:0A37F7) DB.pas#4564
0x00402972(=GameServer.exe:0x01:001972) E:\Project\Server\DiveStarZ\GameServer\App_DB.cpp#97
0x00413F5D(=GameServer.exe:0x01:012F5D) E:\Project\Server\DiveStarZ\GameServer\App_Thread.cpp#40
0x7C82608B(=kernel32.dll:0x01:02508B)
App_DB.cpp 97번째 줄의 코드라는게..
strcpy(stUserInfo.UserID, lpQuery->FieldByName("UserID")->AsString.c_str());
strcpy(stUserInfo.UserNick, lpQuery->FieldByName("UserNick")->AsString.c_str()); <== 97번째 줄
stUserInfo.Sex = lpQuery->FieldByName("Sex")->AsBoolean;
이런식입니다..
DLL에서 제가 만든 TADO클레스 멤버함수인 Create()를 실행하면 ADOConnection, ADOQuery, ADOStoredProc를 동적생성하고 Connect()를 실행하면 DB서버에 접속까지 하는 과정을 거치고요... 여기까지는 문제가 없습니다만, 위와 갈이 쿼리문을 날려서 테이블 내용을 받을때 문제가 생깁니다..
ADO를 동적으로 생성해서 그런가 싶어서 DLL에 폼을 하나 만들어서 ADO컴포넌트를 나열해서 써도 마찬가지네요..
물론, ADO 클레스를 DLL에 넣지 않고, 본 프로젝트에 직접 넣으면 오류 하나없이 잘됩니다..
|