Newsgroup: it.comp.lang.delphi
Titolo: Oggetto DB + Dll

Ciao a tutti, volevo chiedervi se è possibile inserire un oggetto che lavora 
su un db all'interno di una dll?
Vi spiego il mio problema. Sto cercando di sviluppare una piccola 
applicazione che lavora su un database. Dato che volevo poter lavorare su 
più dbms e non su uno solo, avevo pensato all'utilizzo delle dll all'interno 
delle quali avrei inserito l'oggetto che aveva il compito di comunicare con 
il db. In questo modo mi sembrava molto più facile poter aggiornare 
l'applicazione.
Il problema è che quando inserisco il mio oggetto all'interno della dll si 
verificano numerosi errori che non si verificano invece quando compilo 
l'oggetto all'interno dell'applicazione. Anche facendo il debug della dll, 
gli errori si verificano in modo casuale e con un andamento a cascata, cioè 
verificato il primo poi è un susseguirsi di errori che porta l'applicazione 
a bloccarsi.
La mia applicazione lavora in questo modo. All'avvio carica in modo dinamico 
tutte le dll che trova in una determinata directory e se queste dll 
forniscono un oggetto del tipo MioData (da me definito)  inserisce questo 
oggetto in una TList.
All'interno delle dll invece definisco oggetti (esempio TFireBird) che 
estendono il tipo MioData e li restituisco in corrispondenza di una 
determinata chiamata.
La mia applicazione sfrutta un oggetto di tipo MioData, prelevandolo dalla 
lista, per poter lavarare con il database.
Volevo sapere se il mio approccio era completamente errato o come si poteva 
provare a risolvere questo problema che mi assilla ormai da più di due 
settimane. 

 settimane. 
ma le classi presenti nella dll vengono istanziate o no?
Inoltre, trattandosi di classi e non di funzioni, sarebbe meglio usare 
un package.
-- 
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"


Certo.
Mi potresti spiegare meglio l'uso del package visto che non l'ho mai usato e 
non so neanche di cosa si tratti?
Grazie mille. 

 non so neanche di cosa si tratti?
è spiegato nella guida.
in pratica, una dll win32 contiene funzioni.
Un package contiene classi.



Ho letto la guida e cercato anche documentazione su internet ma non riesco 
ad utilizzare bene questi package. Ho fatto un pò di prove e se inserisco 
delle form all'interno dei pacchetti tutto ok, riesco a richiamarle e usarle 
ma se inserisco degli oggetti da me creati, mi imbatto sempre in errori.
Seguendo la guida ho fatto quanto segue :
- Ho creato una mia classe astratta che viene usata dall'applicazione e 
inserita nel package
- Nel package poi creo la classe che estende quella astratta
- Carico in modo dinamico il package e ottengo la classe tramite il suo nome
Fino a qui tutto bene credo, ma ora iniziano i problemi
- Provo a creare un oggetto dalla classe ottenuta ma ottengo sempre un 
errore
Ti posto il codice che ho usato :
var
      PackageModule: HModule;
      AClass: TPersistentClass;
begin
      PackageModule := LoadPackage('Prova.bpl');
      if PackageModule <> 0 then
          begin
                AClass := GetClass('Nuova');
                if AClass <> nil then
                   Oggetto := TInterfaccia (Aclass).Create;
          end;
    UnloadPackage(PackageModule);
  end;
Dove sbaglio?
Grazie mille per l'aiuto 


Ho letto la guida e cercato anche documentazione su internet ma non riesco 



Ho letto la guida e cercato anche documentazione su internet ma non riesco 


 
Ho letto la guida e cercato anche documentazione su internet ma non riesco



Ho letto la guida e cercato anche documentazione su internet ma non riesco



Ho letto la guida e cercato anche documentazione su internet ma non riesco


 Un package contiene classi.
Ho letto la guida e cercato anche documentazione su internet ma non riesco



Ho letto la guida e cercato anche documentazione su internet ma non riesco



Ho letto la guida e cercato anche documentazione su internet ma non riesco



Ho letto la guida e cercato anche documentazione su internet ma non riesco



Ho letto la guida e cercato anche documentazione su internet ma non riesco
