PDA

Visualizza la versione completa : C++ Builder 6


artuking
29-07-2004, 11:13
Ciao a tutti sono nuovo del c++ e non ho ancora capito bene molte cose, ma quella che mi preme di più ora è la seguente:
ho realizzato un piccolo prog. usando database e el mio pc funge bene, ma quando trasporto il file exe in un'altro pc mi da errore manca vcl.bpl e altri file sempre bpl.
vorrei sapere dove sbaglio.
grazie mille in anticipo

alka
29-07-2004, 11:42
Io utilizzo Delphi, ma le somiglianze con C++Builder, linguaggio a parte, sono molte.

I file BPL sono Borland Package Library e contengono la forma compilata dei componenti che vedi installati all'interno dell'IDE.

Quando compili le tue applicazioni, hai la possibilità di includere il codice sorgente dei componenti utilizzati nel file eseguibile (che diviene un vero e proprio "standalone") oppure di fare in modo che il tuo eseguibile si colleghi dinamicamente ai file BPL che contengono il codice binario dei componenti utilizzati.

Al momento, tu stai compilando facendo uso dei runtime package, cioè dei file BPL. Per modificare questa impostazione, devi aprire la finestra di dialogo delle Opzioni di progetto ([Project|Options]) e ricercare la voce Build with runtime packages (scheda "Packages"?) e rimuovere il segno di spunta da tale voce. Il codice sorgente - scritto da Borland - viene così incluso direttamente nell'eseguibile che diviene una scatola monolitica contenente tutto il necessario per funzionare, sebbene le sue dimensioni aumentino di conseguenza rispetto alla versione compilata con i runtime package, più leggera e ridotta, ma che necessità dei file BPL "incriminati" per funzionare.

Spero di averti chiarito le idee. :)

Ciao! :ciauz:

Akira86
29-07-2004, 12:36
Ho avuto anchio gli sesi problemi..

In poche parole il programma che fai con borland usa delle liberie (le VLC) che sono dinamiche e i Package (I BPL che ha descritto alka)il Linker che compila include queste librerie, che essendo dinamiche risiedono nel tuo PC sottoforma di DLL e vengono incluse nel tuo programma, (Un modo per vedere che libreire e package usa il tuo programma e il Dump fatto dalla consol DOS).

Per risolvere il problema devi andare in:

Project->Options->Linker

e togli la spunta su 'USE Dinamyc RTL

poi vai su PackAge E come ti ha detto alka togli la spunta su

Build with runtime packages

Cosi vedi subito che il tuo programma dai pochi Kb che occupava si ingrossa anche di diversi Mb, questo a causa dell'inclusione nel tuo programma di tutto quel codice che risideva nelle librerie e nelle DLL..

Ciao..

alka
29-07-2004, 12:40
Originariamente inviato da Akira86
Cosi vedi subito che il tuo programma dai pochi Kb che occupava si ingrossa anche di diversi Mb, questo a causa dell'inclusione nel tuo programma di tutto quel codice che risideva nelle librerie e nelle DLL..
Parlare di MB mi sembra un po' eccessivo...se il file eseguibile si ingrossa dell'ordine di qualche MegaByte, allora c'è qualcosa che non va. :)

Akira86
29-07-2004, 12:59
Originariamente inviato da alka
Parlare di MB mi sembra un po' eccessivo...se il file eseguibile si ingrossa dell'ordine di qualche MegaByte, allora c'è qualcosa che non va. :)

Dipende se ha tanti componenti e di gruppi diversi...

Poi visto che lavora con i database ci arriverà ad un megabyte.. :zizi:

Ciauz..

artuking
02-08-2004, 18:08
Volevo prima di tutto ringraziarvi per le risposte che mi avete dato.
ma purtroppo non ho risolto completamente i miei problemi.
ovvero quando lancio il programma mi visualizza un'altro errore:
"an error occurred while attempting to initialize the borland database engine (error 2108)"
e non so cosa voglia dire.
Io porto il file exe del programma e il file del database mdb in un'altro pc ma mi da l'errore sopra descritto.

alka
02-08-2004, 18:13
Originariamente inviato da Akira86
Dipende se ha tanti componenti e di gruppi diversi...

Quei componenti devono essere "in uso" affinchè il compilatore li includa nell'eseguibile...e in genere, puro e semplice codice in quantità non smisurate non fa aumentare sensibilmente le dimensioni dell'eseguibile.


Originariamente inviato da Akira86
Poi visto che lavora con i database ci arriverà ad un megabyte.. :zizi:
Non capisco perchè usare i database dovrebbe significare un aumento di dimensioni dell'eseguibile. :rollo:

alka
02-08-2004, 18:17
Originariamente inviato da artuking
[...]"an error occurred while attempting to initialize the borland database engine (error 2108)"
e non so cosa voglia dire.
Io porto il file exe del programma e il file del database mdb in un'altro pc ma mi da l'errore sopra descritto.
Hai fatto uso del BDE (Borland Database Engine) per accedere ai dati: si tratta di una piattaforma, ormai obsoleta (finalmente!), di accesso ai dati che richiede l'installazione di alcune librerie sulla macchina nella quale girerà l'applicazione. Dovresti utilizzare il pacchetto InstallShield incluso con C++Builder per creare un setup in grado di installare i file BDE e definire l'alias che consente all'applicazione di instaurare una connessione con il database.

Ciao! :ciauz:

artuking
03-08-2004, 11:05
come posso fare per collegarmi al database senza usare BDE in modo che non mi dia più problemi del genere??
grazie in anticipo......

alka
03-08-2004, 11:11
Originariamente inviato da artuking
come posso fare per collegarmi al database senza usare BDE in modo che non mi dia più problemi del genere??
Non che si possa definire "problema", anzi è normale che utilizzando librerie di terze parti, il sistema richieda che tali librerie siano residenti sulla macchina in cui l'applicazione che le utilizza viene eseguita. :)

Se non vuoi appoggiarti al BDE, puoi utilizzare la piattaforma ADO di Microsoft (dovresti avere una pagina "ADO" nella Palette dei Componenti).

Si tratta di componenti del tutto equivalenti a quelli del BDE (e non è casuale), ma utilizzando la suddetta piattaforma di accesso ai dati che, nonostante la grandissima somiglianza con il BDE, è più facile che sia già presente sulla macchina del cliente poichè fa parte dei pacchetti di aggiornamento del sistema operativo; precisamente, è parte di MDAC.

Se vuoi slegarti del tutto da componenti che facciano riferimento a piattaforme di accesso ai dati, devi ricercare package di componenti che abbiano "hard coded" la logica di connessione ad un preciso database.

Prova a dare un'occhiata su Torry Delphi's Pages (http://www.torry.net), un sito particolarmente ricco per la disponibilità di componenti di terze parti, spesso freeware e con sorgente; guarda nella sezione "VCL".

Ciao! :ciauz:

Loading