Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [DELPHI]collegare dll al file exe

    Ciao a tutti!
    Mi sto avvicinando alla fine del mio progetto. Ho già cercato informazioni nel file Guida di Delphi, ma mi sembra di entrare in una "giungla".
    So che siccome adopero Firebird e come accesso al db i componenti dbExpress devo affiancare al mio eseguibile la libreria dbExpInt. Io ho trovato nel mio computer dbExpInt.dcu.
    L'ho portata nella cartella dove è contenuto l'eseguibile, ma non ho idea di come proseguire. Chiedo troppo se mi spiegate come devo fare adesso?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Sarò breve perchè sono alle prese con un corso...

    Qual è lo scopo che desideri raggiungere?

    Se il tuo applicativo fa uso della libreria che hai menzionato, basta copiarla nella cartella del programma o in una cartella inclusa nel percorso di ricerca di Windows per farla funzionare.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Ma non è una .dll è una .dcu : cambia qualcosa? (l'ho trovata nella directory lib di Borland, nel mio computer)
    Mi serve per far girare l'eseguibile su DVD in qualsiasi computer.

  4. #4

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    La libreria dbexpint.dll è il driver dbExpress per accedere ad InterBase/FireBird.

    Affinchè la tua applicazione funzioni, ti basta copiare nella cartella dell'eseguibile la suddetta libreria.

    In alternativa, prova ad aggiungere dbexpint alla clausola uses nel sorgente del progetto (file .dpr) per tentare di includere il driver all'interno dell'eseguibile, anche se preferisco sempre la prima soluzione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Alla fine sono riuscita a trovare anche la libreria dbExpint.dll (non solo la .dcu). Ho inserito nella cartella che contiene l'applicativo anche le librerie:
    - GDS32.dll
    - msvcp60.dll (l'ho messa dentro copiandola da un altro progetto: ma a cosa serve?)
    - fbembed.dll

    Quando porto la cartella che contiene tutto il materiale su di un'altro computer l'errore che ottengo è:

    Exception EDatabaseError in module ProvaGuidata.exe at 0007C181.dbExpressError:[0x0015]: Connection Failed
    Database Server Error:unavailable database.

    Pensando che si trattasse di un problema di path per la connessione con il database nella connessione ho inserito questo path:
    DB\db1.fdb (il database db1.fdb l'ho inserito in una cartella che si chiama DB). Ma evidentemente non va bene e non va bene neanche scrivere: ExtractFilePath(application.Exename) + 'db\db1.fdb'.

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301

    FireBird Embedded: istruzioni per l'uso :-)

    La libreria GDS32.DLL non ti serve, in quanto è la libreria che contiene le funzioni "client" per accedere ad un server InterBase/FireBird e, nel caso in esame, tu non hai un server, ma lo utilizzi solo durante la fase di sviluppo vera e propria.

    La libreria che devi appunto utilizzare è FBEMBED.DLL: si tratta anch'essa di un "client" che esporta le stesse funzioni della libreria GDS32.DLL, ma non colloquia con un server vero e proprio bensì emula un server accedendo però direttamente al file .GDB o .FDB (le estensioni adottate da database InterBase e FireBird) ed interrogando direttamente tale file.

    Nelle proprietà del componente SQLConnection, il componente che ti consente di aprire una connessione al database attraverso un driver specifico, nel nostro caso quello di InterBase (dbexpint.dll) che va bene anche per FireBird, devi modificare poi la proprietà VendorLib che contiene il nome della libreria client da passare appunto al driver dbExpress che la utilizzerà per instaurare una connessione al database.

    Quando specifichi in tale proprietà GDS32.DLL, quindi, non fai altro che chiedere al driver dbExpress specifico per FireBird di usare la libreria che comunica con il server nel modo classico; quando nella proprietà inserisci FBEMBED.DLL, indichi al driver di usare la libreria con quel nome che emula un server e accede direttamente al file, consentendoti quindi di utilizzare un database FireBird senza utilizzare un server (da qui il nome "Server Embedded", cioè "server incorporato").

    Per quanto riguarda la libreria msvcp60.dll, devi sapere che su Windows si utilizza Visual C++ per scrivere e compilare il codice sorgente dei file che costituiscono il motore del database vero e proprio; quella DLL fa parte del runtime di VC++ che contiene alcune funzioni di supporto sfruttate sia dalla libreria del server (che però viene installata con un setup completo, quindi non si incontrano particolari problemi) sia dalla libreria del "server embedded", pertanto in questo caso è necessario distribuirla assieme al file FBEMDED.DLL affinchè quest'ultimo funzioni (in caso contrario, riceverai un errore da parte del driver dbExpress che dice di non poter caricare la libreria).

    Ho cercato di fornirti un po' di "background" in modo che tu possa eventualmente intuire la soluzione di eventuali "problemucci" tecnici che si dovessero presentare durante il processo di definizione della cartella finale per il tuo eseguibile, come un file mancante, un'errata impostazione dei parametri di connessione e così via.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.