PDA

View Full Version : VB verificare una folder


texerasmo
05-04-2004, 10:18
Mi sto improvvissando un programmatore in vb
Come si fa a controllare se esiste una dir ?

Grazie a tutti

okay
05-04-2004, 10:31
'code
MyPath = "c:\" ' Imposta il percorso.
myname = Dir(MyPath, vbDirectory) ' Recupera la prima voce.
Do While myname <> "" ' Avvia il ciclo.
myname = Dir ' Legge la voce successiva.
If myname = "MyDir" Then
GoTo vabene 'si esiste
Else
End If
Loop
MkDir "c:\MyDir" 'crea folder MyDir
vabene:
'fine code


ciao

texerasmo
05-04-2004, 10:53
ciao scusami...


Private Sub Command1_Click()
MyPath = "c:\" ' Imposta il percorso.
myname = Dir(MyPath, GMDabase) ' Recupera la prima voce.
Do While myname <> "" ' Avvia il ciclo.
myname = Dir ' Legge la voce successiva.
If myname = "MyDir" Then
Label1.Enabled = True 'si esiste
Else
End If
Loop
Label2.Enabled = False

'fine code

End Sub

Private Sub Form_Load()
Label1.Enabled = False
End Sub

GMDabase è il nme della mia dir che deve cercare Giusto?
Se è cosi' non mi funziona

tnks

texerasmo
05-04-2004, 10:56
scusami ...
funziona perferttamente grazie ...
era così

Private Sub Command1_Click()
MyPath = "c:\" ' Imposta il percorso.
myname = Dir(MyPath, vbDirectory) ' Recupera la prima voce.
Do While myname <> "" ' Avvia il ciclo.
myname = Dir ' Legge la voce successiva.
If myname = "GMDabase" Then
Label1.Enabled = True 'si esiste
Else
End If
Loop
Label2.Enabled = False

'fine code

End Sub

Private Sub Form_Load()
Label1.Enabled = False
End Sub


Pensavo che vbDirectory era il nome della mia dir..
invece era MYdir giustamente :)
Grazie

texerasmo
05-04-2004, 11:28
Private Sub Form_Load()
MyPath = "c:\" ' Imposta il percorso.
myname = Dir(MyPath, vbDirectory) ' Recupera la prima voce.
Do While myname <> "" ' Avvia il ciclo.
myname = Dir ' Legge la voce successiva.
If myname = "GMDabase" Then
Form1.Show 'si esiste
'Form3.Hide
Else:
Form3.Show
'Form2.Hide
'Form1.Hide
End If
Loop
'fine code
Form2.Hide
End Sub


Ho del pb mi entra sia nell
if che ne else

texerasmo
05-04-2004, 11:33
mi è scappato l'invio per sbaglio... :D


dicevo...
ho ancaora dei pb ... :(

Private Sub Form_Load()
MyPath = "c:\" ' Imposta il percorso.
myname = Dir(MyPath, vbDirectory) ' Recupera la prima voce.
Do While myname <> "" ' Avvia il ciclo.
myname = Dir ' Legge la voce successiva.
If myname = "GMDabase" Then
Form1.Show 'si esiste
Else:
Form3.Show
End If
Loop
'fine code
Form2.Hide
End Sub


Ma mi entra si nell if che nell else ossia io vedo entrambi le le form

come mai?

davidino80
05-04-2004, 12:33
ieri avevo aperto un thread simile.. sul controllo di un file. nn può funzionare la stessa soluzione? usando il DIR praticamente..

http://forum.hwupgrade.it/showthread.php?s=&threadid=657545

matpez
05-04-2004, 12:51
No, nn va bene, perchè per un file è OK, per una cartella lui ti fa vedere il suo contenuto...per cui se la cartella esiste ma è vuota a te tornerà che è vuota, per cui come se nn esistesse, ma in verità c'è!! Scusa il gioco di parole :)

matpez
05-04-2004, 12:58
Oppure ragazzi come sempre affidiamoci alla bellissime e buonissime API.... ed il gioco è fatto :)

Private Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" (ByVal pszPath As String) As Long


Private Sub Form_Load()
msgbox CBool(PathIsDirectory("c:\WinNT"))

texerasmo
05-04-2004, 13:27
funziona :D

ok tnks

texerasmo
05-04-2004, 13:37
funziona :D

ok tnks

matpez
05-04-2004, 13:51
:p

texerasmo
05-04-2004, 14:30
e se la cosa diventa un po + complessa... :D

se la dir che devo cercare non si trova in un alberatura precisa?

Il discorso si complica abbastanza ?

matpez
05-04-2004, 14:51
Originariamente inviato da texerasmo
e se la cosa diventa un po + complessa... :D

se la dir che devo cercare non si trova in un alberatura precisa?

Il discorso si complica abbastanza ?

Un pochino si...

Spiegaci bene cosa vorresti fare, o perchè sta cartella dovrebbe trovarsi in giro ?

Così almeno sappiamo bene cosa affrontiamo :D

texerasmo
05-04-2004, 15:11
sto cercando di fare un cd... :)

L'applicazione che sto facendo deve lanciarmi
mysql
jetty
il broswer con la l'url sulla porata 9090

Ora io sono riuscito a fare tutto questo con un file bat

che fa questo

@ECHO OFF
rem set JAVA_HOME=C:\j2sdk1.4.1_01
rem set PATH=%JAVA_HOME%\bin;%PATH%;
rem set CLASSPATH=%JAVA_HOME%\lib\tools.jar;.;%CLASSPATH%;
java -cp C:\j2sdk1.4.1_01\lib\tools.jar;. Prova

Prova .... è una classe che fa questo..

public static void main(String args[])
{
try
{
System.out.println("Carico MySQL...");
Runtime.getRuntime().exec("C:\\GMDabase\\mysql\\bin\\mysqld-nt -u root");
System.out.print("fatto.");
System.out.print("Setto la JAVA_HOME e il PATH.");
System.out.println("Carico Jetty...");
Runtime.getRuntime().exec("setEnv_java.BAT");
Runtime.getRuntime().exec("C:\\j2sdk1.4.1_01\\bin\\java -cp C:\\j2sdk1.4.1_01\\lib\\tools.jar;. -jar start.jar etc\\gm.xml");
System.out.print("fatto.");
long l = System.currentTimeMillis();
for(long l1 = System.currentTimeMillis(); l1 - l < 15000L; l1 = System.currentTimeMillis());
System.out.println("Carico il browser...");
BrowserLauncher.openURL("http://localhost:9090/");
System.out.print("fatto.");
}
catch(Exception exception)
{
System.out.println("Errore: " + exception.getMessage());
}
}

ovvero mi lancia un
setEnv_java.BAT (mi crea delle var di ambiente)
far partire jetty
e il broswer



Ora io non so dove si trova questo file bat l'unica cosa che so è la sua dir di appartenenza.


spero di essere stato chiaro.

matpez
05-04-2004, 15:25
Dici che per esempio sta dentro la cartella A, che è la route, ma potrebbe essere dentro la cartella C ?

texerasmo
05-04-2004, 16:26
si..
in pratica il file bat è sempre dentro una folder di nome

GMErasmo

GMErasmo si potrebbe trovare ovunque....

se però cercare GMErasmo richiede alla macchina tanto tempo è una strada che devo lasciar perdere. :cry:
e ne devo trovare un altra..

Sto pensado che il file bat e la dir la posiziono in un determinata dir senza che l'utente possa scegliere.esempio C:\Programmi\MIAApplicazione\GMErasmo

e lanciare in vb direttamente il file bat.

che ne pensi?

matpez
05-04-2004, 16:39
Va be ma se tu usi il comando App.Path ti torna la path dove si trova il tuo EXE (o progetto se l'hai salvato in qlc cartella), per cui sei sempre dove lo crea, senza essere sicuro che dopo il setup tu perdi le traccie di dove sia il tuo bel programma :)

texerasmo
05-04-2004, 17:01
il pb ce l'ho pechè

Il mio StartIndex.exe deve rimanere dentro il cd e da li mi deve partire l'installazione oppure l'applicazione.

texerasmo
05-04-2004, 17:11
Ho creato un altro .exe che si trova dentro la folder della mia applicazione questo Start.exe fa quello ceh mi aspetto.
Ma solo se lo chiamo con il click del mouse
se invece faccio

Shell ("C:\GMErasmo\Start.exe")

da un altro .exe

non mi funziona :cry:

come mai?

matpez
05-04-2004, 19:07
Prova a mettere nhwnd=Shell("C:\GMErasmo\Start.exe") e cmq controlla che sia perfetto la path altrimenti nn la lancia...

nhwnd prende il valore diverso da 0 se è stato lanciato!!

texerasmo
06-04-2004, 09:43
è strano...
per ora ho risolto facendo così
faccio puntare ad un fle bat che è fratello a Start.exe
così funziona.. anche se è una soluzione che non mi piace tanto :(