Newsgroup: it.comp.lang.visual-basic
Titolo: directory in memoria

Ecco il mio problema:
ho un'applicazione che, alla sua apertura, controlla se esiste il file di 
licenza (corretto) nella directory dell'eseguibile.
Il file c'è ed il programma si apre perfettamente.
Poi, utilizzando una funzione che ho creato per il ripristino di un 
database...navigo apro una finestra di dialogo, entro in una sottocartella e 
seleziono il database da ripristinare.
Fin qui... tutto bene.
Poi... chiudo il programma
lo riapro e...
Sorpresaaaaa
Non trova il file di licenza in quanto lo cerca nella sottocartella dalla 
quale ho prelevato il database da ripristinare.
Me ne sono accorto (che la cerca lì) poiché, copiando il file di licenza in 
quella sottodirectory tutto funziona alla perfezione.
Questo problema avviene "sempre" perché ad ogni apertura del programma "si 
ricorda" l'ultima directory navigata.
Ecco la mia domanda:
come faccio a riportare in memoria la directory nella quale sta 
l'eseguibile?
(non voglio usare un percorso assoluto)
-- 
-----------------------------------
Distinti saluti,
Salvatore Paci
www.salvatorepaci.it
es...Cogito, ergo sum

 (non voglio usare un percorso assoluto)
App.path & "\filedilicenza"
-- 
On a clear disk you can seek forever...
News 2000 [v 2.06] - 
http://www.akapulce.net/socket2000

 App.path & "\filedilicenza"
------------------------------
Il problema è proprio questo: per lui... App.Path è diventata la nuova 
sottocartella e non quella dove risiede l'eseguibile.
Mi spiego meglio:
apro per la prima volta l'applicazione
LUI cerca il file licenza in App.Path (esempio c:\programmi\root) e trova il 
file.
Poi, utilizzando una funzione che emette una dialog box, vado a selezionare 
un file che si trova nella cartella "salvataggi".
Da quel momento in poi, per il programma... App.Path è diventata la cartella 
"salvataggi"

 ha scritto:

E mettere App.Path in una variabile all'inizio che controidicazioni ha?
--
ciao
  Stefano

 E mettere App.Path in una variabile all'inizio che controidicazioni ha?
---------
Tantissime.
Sto cercando (ma ancora non ci riesco) di ripristinare il valore della 
directory corrente e di riportarla a quella memorizzata.
esempio:
memo = app.path
serie di operazione con common dialog
CurDir = memory 'ma a questo punto il programma mi dà errore 

 ha scritto nel messaggio news:er1dtg$dsu$1...@balena.cs.interbusiness.it...

//prova questo:
ChDrive Left(memo, 1)
ChDir memo

 cartella "salvataggi"
Nel senso che tu hai verificato che App.Path contiene fisicamente la stringa 
sbagliata?
Ciao 

 "salvataggi"
Memorizzi app.path all'avvio del programma e da quel momento in poi 
usi la variabile di memoria per i tuoi usi.
-- 
Multitasking:  Screwing up several things at once...


e salvare nel registro ad ogni avvio del programma il percorso in cui
recuperare la licenza???
SaveSetting("NomeApp","Licenza","Path","D:\xyz") e poi la vai a
recuperare in qualsiasi momento con
GetSetting("NomeApp","Licenza","Path","DefaultPath")

 sottocartella e non quella dove risiede l'eseguibile.
nonsense. la commondialog tende a ricordarsi l'ultima finestra aperta, e 
purtroppo tende a farlo anche attraverso programmi diversi, ma app.path e' 
una cosa di vb, la cdl non c'entra.
Option Explicit
Private Sub Command1_Click()
    CDL.ShowOpen
    Text1 = CDL.FileName
    Text3 = App.Path
Debug.Print Text1.Text
Debug.Print Text3.Text
Debug.Print Text2.Text
End Sub
Private Sub Command2_Click()
Debug.Print Text1.Text
Debug.Print Text3.Text
Debug.Print Text2.Text
End Sub
Private Sub Form_Load()
    Text2 = App.Path
Debug.Print Text2.Text
End Sub
load
C:\tmp
command1
C:\docs\default.rdp
C:\tmp
C:\tmp
command2
C:\docs\default.rdp
C:\tmp
C:\tmp
cioe', in ogni caso txt2 e txt3 danno sempre e comunque l'app.path giusto.
invece di descrivere quello che fai, posta il codice che usi realmente.
ciao, a.

 Option Explicit
usiamo questo:
Option Explicit
Private Sub Command1_Click()
    CDL.ShowOpen
    Text1 = CDL.FileName
    Text2 = CurDir
    Text3 = App.Path
    Debug.Print "--------------cmd1"
    Debug.Print Text1.Text
    Debug.Print Text2.Text
    Debug.Print Text3.Text
End Sub
Private Sub Command2_Click()
    Text3 = App.Path
    Debug.Print "--------------cmd2"
    Debug.Print Text3
    Debug.Print App.Path
End Sub
Private Sub Form_Load()
    Text2 = App.Path
    Debug.Print "--------------load"
    Debug.Print Text2.Text
End Sub
--------------load
C:\tmp
--------------cmd1
C:\docs\default.rdp
C:\docs
C:\tmp
--------------cmd2
C:\tmp
C:\tmp

 ChDir memo
*********
Perfetto!
Grazie 1000
Per tutti gli altri: grazie lo stesso. Ho risolto con il codice di salclem2


A me sembra una soluzione alla Wile il coyote :)
Ciao 

 ha scritto nel messaggio news:45d489e0$0$4794$4faf...@reader4.news.tin.it...

Cum grano salis.........

 Cum grano salis.........
mi dite p.f. cosa mi sfugge sull'uso di app.path, o, come e' stata chiamata, 
"la directory nella quale sta l'eseguibile" ?
non ho mai dovuto usare qualcosa come la tua soluzione, mi sono sempre 
limitato a quello che offre nativamente vb, e non mai trovato alcun 
problema...
ciao, a.

 ha scritto nel messaggio news:53ma8qF...@mid.individual.net...

La parola all'OP S.Paci che sembra si sia trovato
in una situazione alquanto sui generis (per rimanere in tema)........
Bye
-- 
That's All Folks!
http://salclem2.altervista.org/

 in una situazione alquanto sui generis (per rimanere in tema)........
ho l'impressione che confonda app.path con curdir. di li' le complicazioni.
ciao, a.