안녕하세요... 델파이 넘 어려워요...
그러니까 3티어 프로그램인데... DLL파일을 사용합니다...
폼이 무지 많은데.. 폼하나하나를 DLL로 만들고 있습니다...
DLL에서 TClientDataSet, TSocketConnection 컴퍼넌트를 사용하면...
첨엔 되는데.. 델파을 종료하고 다시 그 파일을 열때 델파이가 다운 됩니다..
그래서 코드로 TClientDataSet, TSocketConnection을 만들어서..
그러니까... 이렇게
procedure ShowUserInformation(AHandle:THandle; ACaption:String);StdCall;
var
LibHandle:THandle;
begin
LibHandle:=AHandle;
FrmUserInformation:=TFrmUserInformation.Create(Application);
ClientDataSet:=TClientDataSet.Create(nil);
SocketConnection:=TSocketConnection.Create(nil);
DataSource:=TDataSource.Create(nil);
try
FrmUserInformation.Caption:=ACaption;
FrmUserInformation.ShowModal;
SocketConnection.Address:='123.123.123.123';
SocketConnection.Port:=211;
SocketConnection.ServerName:='AppServer.DepartmentData';
ClientDataSet.RemoteServer:=SocketConnection;
ClientDataSet.ProviderName:='DataSetProvider1';
DataSource.DataSet:=ClientDataSet;
FrmUserInformation.DBGrid1.DataSource:=DataSource;
SocketConnection.Open;
ClientDataSet.Open;
finally
ClientDataSet.Free;
SocketConnection.Free;
DataSource.Free;
FrmUserInformation.Free;
end;
end;
이렇게 했더니 보여주긴 보여주는데... 나머지가 않됩니다...
그러니가... TClientDataSet의 DataRequest를 사용할수 없습니다...
어떤 버튼을 눌렀을때...
procedure TFrmUserInformation.Button1Click(Sender: TObject);
var
SQLText:String;
begin
SQLText:='Select * from 테이블이름 where 필드이름=12345';
ClientDataSet.Close;
ClientDataSet.DataRequest(SQLText);
ClientDataSet.Open;
end;
이렇게 했더니 버튼를 클릭하면...
Access violation at address 0209CE9A in module 'XXXXXXX.DLL', Read of address 00000000.
이런 에러가 나는군요...
어떻게 해야하는지. 도와주세요..
고수님들의 많은 도움 부탁드립니다...