PDA

View Full Version : [vb] dov'è l'errore?


mslv
01-02-2005, 18:30
Be', credo sia una cosa abbastanza stupida...
ma non riesco a trovare l'errore di questa sub....

la list1 contiene l'elenco di tutti i file e le cartelle del disco:


Private Sub List1_DblClick()
Dim lpatch As String
lpatch = (List1.List(List1.ListIndex))
Open (App.Path & "\temp\temp.txt") For Output As #1
If Mid$(Right(lpatch, 3), 1, 1) = "." Then
Print #1, lpatch
Else
Print #1, "explorer.exe " & lpatch
End If
Close #1
Shell (App.Path & "\temp\temp.bat")
End Sub


errore: chiamata di routine o argomento non valido.

l'errore è nella funzione shell, no?

grazie, e scusate se vi ho fatto perdere tempo...

matpez
01-02-2005, 21:28
Nella shell devi togliere le parentesi o meglio ancora fare una cosa del genere:


lRet = Shell (App.Path & "\temp\temp.bat")


lRet sarà una variabile long e quando passa dalla shell se è un numero maggiore di 0 allora ha lanciato correttamente il file, altrimenti se è uguale a 0 no!

Occhio che con la shell puoi solo lanciare eseguibili! (.exe e .bat)

mslv
02-02-2005, 16:58
Scusate ancora... l'errore è sempre quello...

ecco il codice:


Private Sub List1_DblClick()
Dim lret As Long
Dim lpatch As String
lpatch = (List1.List(List1.ListIndex))
Open (App.Path & "\temp\temp.txt") For Output As #1
If Mid$(Right(lpatch, 3), 1, 1) = "." Then
Print #1, lpatch
Else
Print #1, "explorer.exe " & lpatch
End If
Close #1
lret = Shell(App.Path & "\temp\temp.bat", vbHide)
End Sub


però mi sembra strano... :confused:

ho fatto di nuovo qualche errore???

mslv
02-02-2005, 17:04
ecco, ho risolto accorciando il percorso... :confused:


Private Sub List1_DblClick()
Dim lret As Long
Dim lpatch As String
lpatch = (List1.List(List1.ListIndex))
Open (App.Path & "\temp.bat") For Output As #1
If Mid$(Right$(List1.List(List1.ListIndex), 4), 1, 1) = "." Then
Print #1, lpatch
Else
Print #1, "explorer.exe " & lpatch
End If
Close #1

lret = Shell(App.Path & "\temp.bat", vbHide)

End Sub



grazie!!!

poi quel txt mi sono scordato di toglierlo...


ma se con la shell si possono eseguire solo eseguibili, come si fa per aprire gli altri file senza fare tutto quel casino (si fà per dire) che ho fatto io?

matpez
02-02-2005, 19:25
Cmq le parentesi erano un errore!

In quel percorso c'era una cartella Temp, la cartelle deve esistere prima di creare dentro un file.