Newsgroup: it.comp.lang.visual-basic
Titolo: problema sull'exe

Ciao a tutti,
sto lavorando ad un codice che per funzionare apre scrive e legge dati da
file (in parte generati dal codice stesso ed in parte fissi) e li processa
opportunamente...
Affinchè l'apertura dei suddetti file sia possibile indipendentemente dalla
directory in cui è installato il codice ho utilizzato le seguenti
istruzioni:
    ChDrive App.Path
    currentdirectory = App.Path & "nomefile.estensione"
    Open currentdirectory For Output As #1
Tutto funziona bene finchè il codice è progetto (sdi); i problemi nascono
quando creo l'eseguibile: se infatti sposto il file .exe dalla directory
nella quale è il progetto che ha generato l'eseguibile stesso in un'altro
posto l'exe non funziona (se rimane nella directory di cui sopra invece
funziona!!) e mi da il seguente errore:
    Path not found!
E' un problema dovuto alle istruzioni che ho utilizzato per la gestione del
path?
Se si, potreste propormi un metodo alternativo per risolvere il problema?
Grazie a chiunque mi voglia aiutare...
Ciao,
Ntonjfi

     Open currentdirectory For Output As #1
ChDrive serve per cambiare il disco corrente non la directory....nel tuo
caso penso che dovresti usare il comando
Chdir App.Path
Inoltre se prendessi ancora essere prova a piazzare prima della open un bel:
msgbox currentdirectory
cosi almeno vedi qual'è il percorso dove prova a scrivere ed è + facile
capire l'eventuale problema
Gianni

Se si, potreste propormi un metodo alternativo per risolvere il problema?
Di solito mi salvo eventuali percorsi predefiniti in un file di
configurazione (ini, registro, xml, db, ...)
-- 
ciao, hal

[cut]
proverò a seguire ognuno dei vostri consigli...
mi chiedo xò come mai il problema sorge solo con l'eseguibile?
ciao,
ntonjfi

 ciao,
Il perchè si sà sempre quando il problema viene risolto...ma prima o
durante. Comuque secondo me non ti dà errore con l'eseguibile perchè in
pratica quella tua istruzione con il chdrive è equivalente di non averla
visto che comunque gli dovresti passare un drive e non una dir...oltre al
fatto che se già stai in c: e gli passi c:\qualchecosa in pratica non svolge
nessun compito (oltre al fatto che lui ti chiede un drive e tu gli passi una
dir). ChDir ti serve questa istruzione.
Gianni

 mi chiedo xò come mai il problema sorge solo con l'eseguibile?
Perchè App.Path restituisce la posizione dell'EXE (anzi, credo la cartella
di partenza fra le proprietà dell'EXE, il "Da"). In ambiente di sviluppo,
invece, la cartella di residenza del progetto.
Ti consiglierei di prevedere un minimo di "Personalizzazione", per esempio
chiedere dove stanno i file che ti interessano, magari proponendo la stessa
cartella dell'EXE (o quella che tu predefinisci).
Non usare ChDrive o ChDir (rischi casini immensi) e nemmeno App.Path. Ti
basta indicare tutto il percorso (sulla base della cartella ove risiedono i
file) nella Open

*Lupo* ci ha deliziati con queste righe
 Quote:

per il mio ultimo lavoro ho trovato una soluzione al quanto carina se posso
osare :
all'avvio da sub main carico le impostazioni ( siano esse su file o  su
codice )
ES: DbDirNome = vb.app.path & "\nomefile"
(uso sempre lo slash perche' nessun file deve o puo' risiedere sulla root ,
file fissi intendo )
cosi se qualcosa non torna me lo segnala all'avviodel programma e con una
gestione d'errore appena decente si capisce subito quale file non trova ,
poi per non cannare qualcosa con le commondialog salvo la cartella corrente
e la ripristino quando esco dalla commondialog
(anche se in questo progetto non serviva)
Es:
myCurDir = CurDir
commondialog.whowqualcosa
....
...
chdir =myCurDir
cosi sei sicuro che si resti "sempre" nella stessa directori (anche se leggi
i file fissi solo all'avvio)
le uniche controindicazioni che ho trovate sono che se ci sono i colegamenti
fatti male ( intendo con il campo da: non impostato )
Che ne pensate ?
Sto facendo passi da gigante seguendo questo NG !!!
Graziassai !
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 durante.
[...]
    Ovvero:
    Il perche' si sa sempre quando il problema viene risolto... mai
prima o durante.
    Ed io domando: *sempre*? ;-)
-- 
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

    Ed io domando: *sempre*? ;-)
La teoria e' quando si sa tutto e niente funziona. 
La pratica e' quando tutto funziona e nessuno sa il perche'. 
In questo caso, abbiamo messo insieme la teoria e la pratica: 
non c' niente che funziona... e nessuno sa il perche'! 
-- 
ciao, hal

 il perche'!
Albert Einstein mi pare :)
Lokar
--
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
UGIdotNET - 
http://www.ugidotnet.org