Q&A

  • DLL파일에서 TClientDataSet 사용하는 법...
안녕하세요... 델파이 넘 어려워요...



그러니까 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.

이런 에러가 나는군요...

어떻게 해야하는지. 도와주세요..

고수님들의 많은 도움 부탁드립니다...



0  COMMENTS