2009-08-07 5 views
0

J'ai un problème avec l'enregistrement des données à diffuser avec un ClientDataSet.TClientDataSet - SaveToStream throws Violation d'accès

je mettre les données dans ClientDataSet et essayer de:

... 
var 
strmBENU: TMemoryStream; 


implementation  
... 

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

... 

En cliquant Button1, voici ce que je reçois:

violation d'accès à l'adresse 0049CEB2 dans le module 'Project2.exe'. Adresse de lecture 00000000.

Qu'est-ce que je fais mal?

Répondre

2

Ressemble à une référence NULL. Avez-vous instancié strmBENU?

+0

Nice, j'instancié et maintenant il dit lorsque je tente de ClientDataSet2.LoadfromStream (strBENU) Une exception a été levée en project2.exe: EDatabaseError: « ClientDataSet2: données manquantes ou fournisseur-DataPackage . ' Processus arrêté – Acron

+0

oublié d'insérer le nom du fournisseur sur le CDS2. mais le chargement à partir du flux puis l'ouverture de CDS2 ne me donne aucune donnée dans mon TDBGrid2 – Acron

+0

échoué en raison d'une erreur Noob ne pas connecter la source de données au DBGrid. La question maintenant. comment obtenir cela sur les sockets ... mais c'est une autre question déjà ouverte. http://stackoverflow.com/questions/1244465/software-design-tier-2-application-with-clientdataset-and-sockets – Acron

3

Probablement le flux n'est pas créé. Essayez ceci:

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

voir le commentaire sur Mitch Wheats répondre – Acron