Newsgroup: it.comp.programmare.win32
Titolo: Esperti di BCB

Mi avevano detto che gli exe creati con BCB (la 3 nel mio caso) inglobassero
al loro interno le necessarie DLL OCX, etc etc, però sto provando ad
eseguire un programmino che usa il Borland Database Engine su un altro
computer e  non funziona. La GUI si avvia correttamente, ma quando provo ad
aprire una tabella, mi dice che è impossibile inizializzare il DB Engine. Ho
compilato l'eseguibile disattivando "Build with runtime packages" , "include
debug information", "use dynamic rtl", "use debug libraries" (l'eseguibile
viene intorno agli 800 k infatti). Devo dedurre che anche con BCB bisogna
impazzire con DLL e OCX? O il DB Engine è un caso a parte, e devo portare
manualmente nell'altro computer la DLL (se si quale?). E in ogni caso,
esiste un sistema infallibile per vedere di cosa necessita un exe per
funzionare?

aprire una tabella, mi dice che è impossibile inizializzare il DB Engine. Ho
Il Borland Database Engine va installato su tutte le macchine su cui
viene usato. 
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------
"There is nothing better for understanding a kangaroo
 than seeing it jump." [D.Grune, C.J.H. Jacobs]
-----------------------------------------------------

al loro interno le necessarie DLL OCX,
Forse c'è stato una incomprensione tra te e chi ti ha detto ciò....
Probabilmente intendeva dirti che gli eseguibili del BCB sono Stand-Alone,
ovvero non necessitano di librerie di terze parti!
Da qui a dire che venga tutto incluso nell'exe c'è un po' di strada....Se
scrivi una DLL "tua" la devi allegare al programma altrimenti l'exe andrà a
ricercare delle funzioni in una DLL che non c'è! Oddio è possibile anche
includere la DLL nell'eseguibile con qualche direttiva al compilatore, ma
questo è un altro discorso!
Ciao
--
- Carlo -
BSSoftware Tips Mailing-List Support

 wrote in message
fCT_4.107640$VM3.7...@news.infostrada.it...

Scusa e come si capisce se i componenti di terze parti vengono inclusi o
meno, a random? Ci sarà una regola? Per esempio ho scaricato un componente
Winsock (che nel BCB3 standard manca) per fare un programmino di chat. Poi
ho compilato il programma con le impostazioni di cui sopra e il programma
funziona anche su altre macchine, solo l'exe. Comunque ho notato che
allegato al BCB3 c'è anche l'install shield che chiede appunto se si intende
installare il BDE engine sull'altra macchina, quindi problema risolto, anche
se il setup viene di bei 3 dischettoni da 1.4 (ma vince ancora contro VB che
praticamente per lo stesso programma mi crea un setup di almeno 10 mega).

praticamente per lo stesso programma mi crea un setup di almeno 10 mega).
Certo che esiste "una regola"!
Il compilatore include nell'eseguibile tutto ciò che gli viene "suggerito"
dal codice, + le cose di cui necessita egli stesso!
Tu hai scaricato il componente Winsock e lo hai incluso nella tua
applicazione, a questo punto il compilatore prenderà gli header dei
componenti Winsock (o tutta la unit o solo lo stretto necessario...questo
dipende dal compilatore) , perchè dentro il tuo stesso codice fai
riferimento a quelle funzioni.
Se invece io utilizzo un membro del tutto "esterno" alla mia applicazione
allora dovrò portarmelo dietro!
Se io utilizzo una API definita nella libreria User32, quel mio programma
funzionerà (a grandi linee) su tutte le piattaforme Windows, perchè su ogni
Windows c'è la User32.DLL, ma se vado su un PC dove questa libreria è
assente allora il mio programma non funzionerà +!
Spero di essere stato chiaro, in caso contrario chiedi pure!



Intanto grazie per le risposte e la disponibilità dimostrata e scusami se
probabilmente queste mie domande sono banali, purtroppo non sono un
programmatore e quel poco che ho capito di BCB l'ho imparato dall'help del
compilatore non avendo uno straccio di libro in proposito, ora me ne sta
arrivando uno della SAMS, che ha deciso in questi giorni di fare una
ristampa (credo in seguito alle richieste di almeno 10 librerie a cui mi
sono rivolto). Comunque, se ho capito bene, tutti i componenti VCL che vedo
nella palette non sono degli OCX come in VB (e l'unico paragone che posso
fare non conoscendo altro), ma degli hpp che quindi vengono compilati nel
sorgente del programma finale? Poi ho visto che c'è la possibilità di
importare componenti esterni, sia già "pensati" per BCB o DELPHI (che a
quanto ho capito sono molto imparentati), sia ActiveX di terze parti. Per i
primi, appunto come ti dicevo, mi serviva un componente Winsock, trovato in
rete e installato va benissimo, per i secondi, avevo tentato (adesso la dico
grossa lo so) con il Winsock Control 6.0 della Microsoft e ovviamente(?) non
ha funzionato, quando provo a compilare mi da un serie di errori che non
capisco. Importare OCX nell'ambiente BCB (se possibile) significa tradurli
in hpp, che quindi poi verranno inclusi e compilati nell'EXE o dovranno
essere poi installati a parte?
Grazie!



 funzionare?
vai nel prompt di do e digita "tdump nomefile.exe | more"
vedrai le dll che necessita il programma
i tdump si trova nella cartella bin del builder

essere poi installati a parte?
Dunque come ti dicevo ci sono diverse tecniche....non devi comunque
tradurlo.
Alla fine  o includi nell'eseguibile l'OCX e poi lo estrai prima di avviare
il programma (in pratica il tuo EXE conterrà l'OCX tra le sue righe di
codice) oppure te lo porti dietro come file da distribuire!
Spero di aver chiarito i tuoi dubbi!



C'e' un problema. Il lavoro che fa il BCB con l'importazione degli OCX è
creare una classe di riferimento, ovvero un classe che implementi gli stessi
metodi e le stesse proprietà, ma di codice non ha nulla se non delle
chiamate all'ocx come se fosse una DLL.
In più l'OCX deve essere registrato nel sistema che lo utilizzerà pertanto
non lo puoi includere all'exe come se fosse una risorsa o una DLL standard
(perché ci sono anche le DLL OLE come la SHDOCVW dell'IE che anche loro
devono passare per il regsvr32), l'unica soluzione e che se usi degli OCX li
devi includere nel pacchetto di installazione.

non lo puoi includere all'exe come se fosse una risorsa o una DLL standard
Io non ho molta familiarità con gli OCX, ma se li includessi come risorsa
non potrei fare successivamente la registrazione dello stesso?


 non potrei fare successivamente la registrazione dello stesso?
Si, in effetti potresti farlo, nessuno te lo vieta.
Martino