Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - VB6 Leggere attributi file
Forum - Visual Basic 6 - VB6 Leggere attributi file

Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 12:04
Lunedì, 22/06/2009
Ciao
Sto cercando documentazione su come leggere gli attributi di un determinato file.
Tipo se è ReadOnly,Normal, System e il suo peso.


Grazie anticipatamente

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 20:12
Lunedì, 22/06/2009
Ciao,
il seguente codice legge gli attributi del file e li scrive in una Txt, poi evidenzia i vari codici di attributo in una MsgBox, accanto a quelli riscontrati nella lettura del file.
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command1_Click()
  2.  
  3. Dim s As String
  4. Dim sFILE As String
  5. Dim sAttributi As String
  6.  
  7.     sFILE = App.Path & "\Nome.Estensione del file"
  8.     s = GetAttr(sFILE)
  9.    
  10.     Text1.Text = ""
  11.    
  12.     Select Case s
  13.         Case 0
  14.             sAttributi = "Attributo del file = 0 - Normale"
  15.         Case 1
  16.             sAttributi = "Attributo del file = 1 - Sola lettura"
  17.         Case 2
  18.             sAttributi = "Attributo del file = 2 - Nascosto"
  19.         Case 4
  20.             sAttributi = "Attributo del file = 4 - File di sistema"
  21.         Case 8
  22.             sAttributi = " 8 - Attributo del file = volume dell'unità disco"
  23.         Case 16
  24.             sAttributi = " 16 - Directory o cartella"
  25.         Case 32
  26.             sAttributi = " 32 - Attributo del file = Archivio"
  27.         Case 64
  28.             sAttributi = " 64 - Attributo del file = Collegamento"
  29.         Case 128
  30.             sAttributi = " 128 - Attributo del file = Compresso"
  31.     End Select
  32.    
  33.     Text1.Text = sAttributi
  34.    
  35.     'Visualizza gli attributi:
  36.     MsgBox "Attributi trovati: " & s & " : 0-Normale; 1-SolaLettura; 2-Nascosto; 4-FileDiSistema; 8-Volume; 16-cartella; 32-archivio; 64-collegamento; 128-compresso;", vbInformation, "lettura impostazioni file\cartella"
  37.     s = FileDateTime(sFILE)
  38.     MsgBox "Data creazione / Modifica file: " & s, vbInformation, "Lettura data del file|cartella"
  39.  
  40. End Sub
  41. Spero che possa servirti.

:k:

PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 11:42
Martedì, 23/06/2009
Ciao e grazie dell'auto.
Ho però un piccolo problema, utilizzando FSO e file.size sto cercando di capire quanto un determinato file occupa spazio sul disco.
Se analizzo un file presente nella mia cartella, non c'è problema, il risultato è corretto, ma quando analizzo un file che il qualcuno sta copiando nella mia cartella il risultato rimane sfalsato.
Mi spiego meglio:
se analizzo un file che mi stanno copiando sulla mia cartella il mio script mi da lo spazio del file completo e non quanto il file occupa in quel determinato momento, cosi se si sta scaricando un file da 1GB il programmino mi da sempre 1GB anche quando in realta il file è a metà scarico.
E' possibile capire invece lo spazio reale occupato in quel momento?

Graze

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 17:08
Martedì, 23/06/2009
Bhe fosforo a te occorre una ProgressBar che evidenzi il progredire dell'operazione.
A tale riguardo tempo fa ho realizzato un progetto di prova per successive applicazioni, lo posto di seguito. E' commentato quindi non dovresti avere problemi:
Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2. Public intRisCD As Integer
  3. '---------------------------------------------------------------
  4. Private Sub Form_Load()
  5.    
  6.     ProgressBar1.min = 0
  7.     ProgressBar1.max = 100
  8.     Set FSO = New FileSystemObject
  9.  
  10. End Sub
  11. '---------------------------------------------------------------
  12. Private Sub Command1_Click()
  13.    
  14. 'Legge percorso e Nome della cartella principale:
  15.     Set dSorg = FSO.GetFolder(App.Path & "\DATI")
  16.  
  17. 'Evidenzia l'Origine della copia:
  18.     Frm1.LblOrigine2.Caption = dSorg
  19.  
  20. 'Legge capacità in bytes della cartella principale:
  21.     btFolder = dSorg.Size
  22.      
  23.     If btFolder > 0 Then
  24.         Frm1.MousePointer = 11
  25.         Call ClearInfo
  26.         'Informa sul totale dei bytes da copiare:
  27.         TxtDcopy.Text = Format(btFolder, "#,##0")
  28.         'Chiama le routine:
  29.         Call CopySubFoldersX
  30.         Call CopyFilesX
  31.         Frm1.MousePointer = 0
  32.     End If
  33.  
  34. End Sub
  35. '---------------------------------------------------------------
  36. 'Pulisce le variabili ed i controlli:
  37. Private Sub ClearInfo()
  38.        
  39.         If Frm1.ProgressBar1.value <> 0 Then
  40.             Frm1.ProgressBar1.value = 0
  41.             Frm1.lblInfo.Caption = ""
  42.             Frm1.TxtDcopy.Text = ""
  43.             Frm1.TxtCopiati.Text = ""
  44.             Frm1.TxtPerc.Text = ""
  45.             bytesScritti = 0
  46.             fileLenght = 0
  47.         End If
  48. End Sub
  49. '---------------------------------------------------------------
  50. 'Chiusura della Frm con Exit o X:
  51. Private Sub Form_QueryUnload(Cancel As Integer, unloadMode As Integer)
  52.  
  53.     Select Case unloadMode
  54.          Case vbFormControlMenu
  55.            'il form è chiuso dall'utente:
  56.             Call CmdExit_Click
  57.     End Select
  58.    
  59.     'Non esce dall'applicazione:
  60.     If intRisCD = vbNo Then
  61.         Cancel = 1
  62.     End If
  63.  
  64. End Sub
  65. '---------------------------------------------------------------
  66. Private Sub CmdExit_Click()
  67.    
  68.         intRisCD = MsgBox("Chiudere l'applicazione ?", vbYesNo + vbQuestion, "Applicazioni Aziendali")
  69.        
  70.         If intRisCD = vbYes Then
  71.             Set FSO = Nothing
  72.             Unload Frm1
  73.             Set Frm1 = Nothing
  74.         End If
  75.         If intRisCD = vbNo Then
  76.             Exit Sub
  77.         End If
  78.  
  79. End Sub
  80.  
  81. ' Codice da inserire in un modulo Bas:
  82. Option Explicit
  83.     Public FSO As FileSystemObject
  84.     Public dSorg As Folder
  85.     Public btFolder As Long
  86.     Public fileLenght As Long
  87.     Public bytesScritti As Long
  88.     Public DestCopy As String
  89.     Dim vrnF1 As Variant
  90.     Dim vrnSF As Variant
  91. '---------------------------------------------------------------
  92. Public Sub CopySubFoldersX()
  93.        
  94.         'Destinazione della copia:
  95.             DestCopy = "D:\Elaborazioni\VBEsempi\ProgressBSFeFil\DATI2"
  96.         'Evidenzia la Destinazione della copia:
  97.             Frm1.LblDest.Caption = DestCopy
  98.        
  99.         'Istanzia la subFolder:
  100.             Set vrnSF = dSorg.SubFolders
  101.            
  102.             For Each vrnF1 In vrnSF
  103.         'Acquisisce lunghezza della SubFolder:
  104.                 fileLenght = vrnF1.Size
  105.        
  106.         'Da modificare con il percorso di destinazione - copia le SubFolder:
  107.                 FSO.CopyFolder vrnF1, DestCopy, True
  108.        
  109.         'Evidenzia la SubFolder copiata:
  110.                 Frm1.lblInfo.Caption = vrnF1
  111.                 Frm1.lblInfo.Refresh
  112.            
  113.                 Frm1.ProgressBar1.value = Percent(0, btFolder, bytesScritti + fileLenght)
  114.                 bytesScritti = bytesScritti + fileLenght
  115.         'Evidenzia i bytes copiati:
  116.                 Frm1.TxtCopiati.Text = Format(bytesScritti, "#,##0")
  117.                 Frm1.TxtPerc.Text = Format((bytesScritti / btFolder) * 100, "#,##0.00")
  118.                 Frm1.ProgressBar1.Refresh
  119.             Next vrnF1
  120. End Sub
  121. '---------------------------------------------------------------
  122. Function Percent(min As Long, max As Long, value As Long) As Long
  123.    
  124.         '100 : x = btFolder : bytesScritti
  125.             Percent = value * 100 \ max
  126.  
  127. End Function
  128. '---------------------------------------------------------------
  129. Public Sub CopyFilesX()
  130.        
  131.         Dim f As File
  132.         Dim KbFolder As Long
  133.         Dim strPercOrig As String
  134.        
  135.             For Each f In dSorg.Files
  136.             'Acquisisce lunghezza del File:
  137.                 fileLenght = f.Size
  138.             'Acquisisce il percorso di origine del File:
  139.                 strPercOrig = f.ParentFolder
  140.            
  141.             'Da modificare con il percorso di destinazione - copia i Files:
  142.                 FSO.CopyFolder strPercOrig, DestCopy, True
  143.                 KbFolder = dSorg.Size
  144.            
  145.             'Evidenzia il file copiato:
  146.                 Frm1.lblInfo.Caption = f
  147.                 Frm1.lblInfo.Refresh
  148.                
  149.                 Frm1.ProgressBar1.value = Percent2(0, KbFolder, bytesScritti + fileLenght)
  150.                 bytesScritti = bytesScritti + fileLenght
  151.            
  152.             'Evidenzia i bytes copiati:
  153.                 Frm1.TxtCopiati.Text = Format(bytesScritti, "#,##0")
  154.             'Evidenzia la % di progressione:
  155.                 Frm1.TxtPerc.Text = Format((bytesScritti / KbFolder) * 100, "#,##0.00")
  156.             'Aggiorna la ProgressBar:
  157.                 Frm1.ProgressBar1.Refresh
  158.             Next f
  159.  
  160. End Sub
  161. '---------------------------------------------------------------
  162. Function Percent2(min As Long, max As Long, value As Long) As Long
  163.         Percent2 = value * 100 \ max
  164. End Function



Il prog. é funzionante (per scupolo l'ho testato) fai delle prove attenendoti ai commenti dell'esempio.
Spero che ti sia utile.
:k:

PM Quote
Avatar
fosforo (Normal User)
Expert


Messaggi: 391
Iscritto: 06/04/2009

Segnala al moderatore
Postato alle 21:43
Martedì, 07/07/2009
Grazie
Scusa x il ritardo am sono stato via x lavoro
Lo provo e poi ti saprò dire

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 8:16
Mercoledì, 08/07/2009
Anche se avesti postato prima non avrei potuto leggere, avevo il PC fuori uso (Virus??).
:D

PM Quote