View Full Version : codice java in codice visual basic
texerasmo
19-05-2004, 11:45
File[] roots = File.listRoots();
boolean cerca= true;
for(int i=0; ( i<roots.length && cerca); i++){
percorso_fs = roots[i]+"gmdt";
File f = new File(percorso_fs);
System.out.println("percorso: " + percorso_fs);
if (f.exists()){
cerca=false;
percorso = percorso_fs;
System.out.println("percorso: " + percorso);
}
}
questo codice java mi elenca le root del mio pc e quando mi trova la cartella gmdt che si trova sotto una root esce dal for
Ora qualcuno di voi puo aiutarmi a farlo in vb?
Ecco a te :)
Option Explicit
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal sDrive As String) As Long
Private Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" (ByVal pszPath As String) As Long
Public Enum DRIVE_TYPE
DT_ABSENT = 1
DT_REMOVABLE = 2
DT_FIXED = 3
DT_REMOTE = 4
DT_CDROM = 5
DT_RAMDISK = 6
End Enum
Private Function GetListDrives(ByVal DriveType As DRIVE_TYPE) As Variant
Dim lRet As Long
Dim lTemp As Long
Dim sTemp As String * 255
Dim sAux As String
Dim vDrives As Variant
Dim nI As Integer
Dim nLen As Integer
Dim sVetDriver() As String
'controllo tutti di drive
lTemp = Len(sTemp)
lRet = GetLogicalDriveStrings(lTemp, sTemp)
sAux = Left$(sTemp, lRet)
vDrives = Split(sAux, vbNullChar)
'prendo solo i drive voluti
ReDim sVetDriver(0)
nLen = UBound(vDrives)
For nI = 0 To nLen
If GetDriveType(vDrives(nI)) = DriveType Then
ReDim Preserve sVetDriver(UBound(sVetDriver) + 1)
sVetDriver(UBound(sVetDriver)) = vDrives(nI)
End If
Next
GetListDrives = sVetDriver
End Function
Private Sub Form_Load()
Dim vVet As Variant
Dim nLen As Integer
Dim nI As Integer
Dim bTrovato As Boolean
vVet = GetListDrives(DT_FIXED)
nLen = UBound(vVet)
nI = 0
Do
nI = nI + 1
If CBool(PathIsDirectory(vVet(nI) & "gmdt")) = True Then
bTrovato = True
End If
Loop Until nI = nLen Or bTrovato = True
End Sub
texerasmo
19-05-2004, 13:00
gentilissimo...
Originariamente inviato da texerasmo
gentilissimo...
Non c'è di che :)
texerasmo
20-05-2004, 12:12
chiedo troppo...
se voglio eliminarla??
Originariamente inviato da texerasmo
chiedo troppo...
no :p
Ecco devi fare così:
Call RmDir("TUA_PATH_CARTELLA")
texerasmo
20-05-2004, 13:22
RmDir (vVet(nI) & "gmdt")
non pesavo che poteva fare una cosa così semplice..
risolto grazie.
Bhe tutto quello che si fa in VB6 è dettato dalle API, solo che i programmatori che hanno creato VB hanno pensato che per facilitare il tutto era meglio creare funzioni con include già le API giusto per nn sprecare 10 righe per fare una cosa semplice... ma siccome nn si poteva riempire VB di funzioni allora ci sono sole le principali.. le altri devi scrivere proprio le API, come appunto nell'esempio dell'elenco delle root :)
Conta che la fregatura delle API è appunto la sintassi delle funzioni, infatti ci sono vari programmai che ricordano questa cosa, altrimenti a mente sarebbe una cosa impossibile ricordare centinaia di funzioni con i relativi paramentri!
Per creare ed eliminare le cartelle con le API basta fare così:
Private Declare Function CreateDirectoryEx Lib "kernel32" Alias "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal lpNewDirectory As String, lpSecurityAttributes As Any) As Long
Private Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long
Private Sub Form_Load()
'creo la cartella
CreateDirectoryEx "C:\Windows", "C:\KPD-Team", ByVal 0&
'elimino la cartella
RemoveDirectory "C:\KPD-Team"
End Sub
Seza le API e senza dichiare nulla basta utilizzare il MkDir ed il RmDir :p
texerasmo
20-05-2004, 16:46
La catella che devo eliminare è di sola lettura posso forzare l'eliminazione?
oppure posso cambiarli i permessi?
So cambiare gli attriburi ai file, ma alle directory no, faccio qlc ricerca e poi ti faccio sapere :)
Per ora ho trovato solo un metodo senza l'ausilio delle API
Devi includere delle referenze del progetto: Microsoft Scripting Runtime
L'ho provato e funziona:
Dim fso As FileSystemObject
Dim lFolder As Folder
Set fso = New FileSystemObject
Set lFolder = fso.GetFolder("c:\gmdt")
lFolder.Attributes = Normal
Se ci sono problemi chiedi :p
texerasmo
27-05-2004, 18:50
tnk..
questo test non mi funziona se la dir si trova nel cdrom..
d:\gmdt
puoi aitarmi per favore?
If CBool(PathIsDirectory(vVet(nI) & "gmdt")) = True Then
bTrovato = True
End If
Loop Until nI = nLen Or bTrovato = True
:cry: :cry:
Per farti dare l'elenco dei cdrom devi passare alla funzione il parametro DT_CDROM
Allora ti da l'elenco dei cdrom
texerasmo
28-05-2004, 10:44
scusami..
Private Function GetListDrives(ByVal DriveType As DRIVE_TYPE) As Variant
a questa funzione?
come paramentro aggiuntivo oppure devo sostituirlo a driveType
texerasmo
28-05-2004, 11:27
risolto bastava un po' + di attenzione...
tnks
Originariamente inviato da texerasmo
risolto bastava un po' + di attenzione...
tnks
:sofico: :oink: :sofico:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.