PDA

Visualizza la versione completa : [DELPHI] Connessione a database e specificazione del percorso


re dei giovani
14-02-2007, 11:15
Ciao a tutti, sto implementando una libreria che, per il suo funzionamento, deve caricare un elenco di stringhe salvate in un file chiamato database.txt che a sua volta è salvato nella stessa directory della mia unit...Il problema è che quando arrivo al caricamento del file mi dice EFOpenError impossibile caricare / aprire file....
utilizzo queste tre righe di comando:

var database:TStringList;
....
database:=TStringList.create;
database.loadFromFile('database.txt'); // qui mi da errore

Eppure il file esiste ed è nella stessa directory....inoltre la cosa è strana perchè queste istr le metto ora nella mia libreria affinchè l'utilizzatore che la richiama nel programma in cui la userà non debba gestire database, ma in un primo MOMENTO, lasciaVo questa possibilità al programmatore. in un ex. quindi avevo aperto il database da una unit esterna con gli stessi comandi e non mi dava nessun errore...
NaTURALMENTE ORA CHE GESTISCO IL TUTTO DALLA LIBRERIA QUESTA SEZIONE DELLA UNIT ESTERNA NON C'E' PIU' QUINDI ERRORE NON E' DOVUTO NEANCHE A QUESTO....
NON SO PIU' DOVE SBATTERE IL CRANIO :dhò:

Nikk11
14-02-2007, 11:48
Hai provato a passargli anche la cartella al nome file :confused:
La puoi ricavare tramite "ExtractFilePath(Paramstr(0))".
Se ancora non te lo carica... non ricordo se la TStringList ha un limite di 64K sulla dimensione massima del suo testo...
Semmai prova ad usare un TFileStream, che è fatto apposta x il caricamento e la gestione di file

PS : Cambia il titolo, sembra si parli di RDBMS e SQL.

Ciao :ciauz:

re dei giovani
14-02-2007, 13:44
Grazie mille ora funziona....il codice...mi rimane invece un dubbio logico....come mai non funzionava prima? Vero io gli passavo solo il nome del file database.txt , ma è anche vero che questo si trova nella stessa directory della unit in cui viene aperto....come mai allora non mi accettava questa ricerca diretta?

mondobimbi
14-02-2007, 13:50
dipende da dove è l'esecutivo. Se lo lanci da ide e in una cartella temperonea
ciao
sergio

mondobimbi
14-02-2007, 14:14
una piccola rettifica, non è in una cartella temporanea, comunque la directory di riferimento è dove risiede il file exe
ciao
sergio

Nikk11
14-02-2007, 15:39
Originariamente inviato da re dei giovani
Grazie mille ora funziona....il codice...mi rimane invece un dubbio logico....come mai non funzionava prima? Vero io gli passavo solo il nome del file database.txt , ma è anche vero che questo si trova nella stessa directory della unit in cui viene aperto....come mai allora non mi accettava questa ricerca diretta?

Il problema si può verificare anche quando il collegamento sul desktop al programma è senza la cartella di lavoro compilata. In questo caso la "workdir" diventa quella del sistema operativo in quel momento, e allora succedono di queste cose.
Per esperienza t posso dire che è sempre buona cosa lavorare con i nomi file completi.

Ciao :ciauz:

Loading