Newsgroup: it.comp.lang.delphi
Titolo: TDatasource da passare ad una DLL

Salve a tutti, ho un problema con una libreria scritta in delphi.
In pratica non riesco a passare correttamente da un EXE ad una DLL un
DataSource pieno di dati. In realtà il DataSource arriva alla Dll ma
quando cerco di associare ad un oggetto (griglia, lista, combo) ottengo il
seguente errore:
Class EInvalidPointer Invalid Pointer Operation.
Attualemente la DDL esegue solo uno show di una form che a sua volta
dovrebbe mostrare in una griglia i dati caricati da una query che si trova
su di un datamodule dell'EXE che ha chiamato la DLL.
HHHEEELLLPPPP!!!!
Grazie in anticipo a tutti.
--- posted by geoForum on 
http://www.delphiedintorni.it

 HHHEEELLLPPPP!!!!
kakkio urli? senza un po di codice manco il mago di oz potrebbe aiutarti.
-- 
Alberto Salvati
A NEAPOLITAN Delphi Developer who is studying c# and .net
"Dicette 'o pappece 'nfaccia 'a noce dammi 'o tiempo che pure te spertoso"


Buon giorno, se avessi avuto del codice non avrei avuto bisogno di aiuto! 
Il problema è proprio questo!


Alberto Salvati
L'unica parte del codice funzionante esistente è la seguente:
//---------------------------------dentro la DLL
procedure ApriAllestimenti(dm:TDatasource);stdcall;
var 
    frmGestAllestimenti:TfrmGestAllestimenti;
begin
    frmGestAllestimenti:=TfrmGestAllestimenti.Create(application);
    ShowMessage(IntTostr(dm.Dataset.RecordCount)); //qui verifico la   
presenza di dati che tra effettivamente ci sono.
    frmGestAllestimenti.DataSource1.Dataset:=dm.DataSet; //questa
assegnazione non mi da errori anche se assegno il datasource invece che
direttamente il dataset
    frmGestAllestimenti.Griglia.DataSource1.Dataset:=dm.DataSet; //questa
assegnazione mi da l'errore di "invalid pointer operation" anche se
assegno il datasource invece che direttamente il dataset
 
    frmGestAllestimenti.ShowModal;
    FreeandNil(frmGestAllestimenti);
end; 
exports ApriAllestimenti;
//---------------------------------dentro l'EXE
procedure TForm1.cmdOKclick(Sender:TObject);
begin
  apriallestimenti(DataModuleExpo.dsModulo);
end;
Non ho ottenuto risultati migliori utilizzando il dataset al posto del
datasource e anche usando una function invece di una procedure non ottengo
niente di buono.


 ha scritto nel messaggio 
news:gNOve.30791$bc.1...@tornado.fastwebnet.it...


Non so di cosa parli, come dovrei fare? Perché in realtà, il passaggio dei
dati avviene (tant'è che il count del record restituisce, tramite lo
showmessage, il numero corretto di record). Il problema sta nel fatto che
non riesco ad assegnare la sorgente dati a nessun oggetto (tipo dbgriglia,
dbcombo, dblista o dbtext).


Ciao,
hai provato a mettere la unit sharemem all'inizio delle uses del 
progetto dell'exe e della dll?
bye
MaxSCZ


...un'altra prova che puoi fare č quella di togliere la clausola
stdcall; dalla definizione di procedura.
Nel caso devi specificarla anche nell'exe quando definisci come external
procedure ApriAllestimenti(dm:TDatasource);stdcall; external 'mia.dll';
ciao


non ho provato effettivamente... vi terrò informati! ;-)


...un'altra prova che puoi fare è quella di togliere la clausola


Mete ha scritto:
[cut]
Invece del DataSource, prova a passare il DataSet associato.
Ciao,
Gianluca.