2009-08-07 3 views
0

ClientDataSet으로 스트리밍 할 데이터를 저장하는 데 문제가 있습니다.TClientDataSet - SaveToStream이 액세스 위반을 throw합니다.

내가 ClientDataSet에 데이터를 넣어하려고 :

액세스 위반을 ADRESS 0049CEB2에서 모듈 'Project2.exe을'

... 
var 
strmBENU: TMemoryStream; 


implementation  
... 

TForm1.Button1Click(Sender: TObject); 
begin 
    ClientDataSet1.SaveToStream(strmBENU); 
end; 

... 

클릭 Button1을, 여기에 내가 무엇을 얻을 수 있습니다. 읽기 주소 00000000.

내가 뭘 잘못하고 있니?

답변

2

NULL 참조와 유사합니다. strmBENU을 인스턴스화 했습니까?

+0

니스, 내가 그것을 인스턴스화하고 난 예외가 project2.exe에서 발생 된 ClientDataSet2.LoadfromStream (strBENU) 하려고 할 때 지금은 말한다 : EDatabaseError 'ClientDataSet2 : 누락 된 데이터 제공 업체 또는 DataPackage . ' 프로세스가 중지되었습니다. – Acron

+0

CDS2에 제공자 이름을 입력하는 것을 잊었습니다. 스트림에서로드 한 다음 CDS2를 열면 TDBGrid2에 아무 데이터도 표시되지 않습니다. – Acron

+0

은 데이터 소스를 DBGrid에 연결하지 않고 noob 오류로 인해 실패했습니다. 지금 질문. 그것을 소켓을 통해 얻는 방법 ...하지만 그것은 또 다른 질문입니다. http://stackoverflow.com/questions/1244465/software-design-tier-2-application-with-clientdataset-and-sockets – Acron

3

아마 스트림이 생성되지 않습니다. 이 시도 :

TForm1.Button1Click(Sender: TObject); 
var 
    strmBENU: TMemoryStream; 
begin 
    strmBENU := TMemoryStream.Create; 
    try 
    ClientDataSet1.SaveToStream(strmBENU); 
    // do stuff with stream 
    finally 
    strmBENU.Free; 
    end; 
end; 
+0

Mitch Wheats 답변에 대한 답변보기 – Acron

관련 문제