Newsgroup: it.comp.lang.visual-basic
Titolo: dimensioni di file e filelen()

Buon giorno a tutti..
sentito la mia mancanza?? :-)
Ecco qui un piccolo problemino, per altro spesso trattato qui sul ng, ma
che sono riuscito a risolvere solo parizialmente.
In una applicazioncina, ho necessita' di sapere la dimensione in byte di
alcuni files.
Fino a questa mattina utilizzavo il bel FileLen () passandogli il nome ed
il path del file da "pesare", e tutto bene finche' non mi e' stato
chiesto.. ma io devo poter lavorare anche con file oltre i 2 gb (ed
aggiungerei, anche oltre i 4).
Per ora ho risolto utlilizzando il FileSystemObject, pero' leggendo un po'
di post sul ng, vedo che moltissimi lo sconsigliavano per problemi vari
legati all'utilizzo dell'oggetto stesso.
Ho trovato anche qualche cosa sull'Api GetFileSizeEX, che pero' non
risulta presente nel mio sistema WinXP (almeno con il visualizzatore delle
API).
Considerando che il mio software dovra' girare prevalentemente su XP
(forse qualche cosa in Win2000, ed evitato per il momento Vista), quale
suggerimento vi senitreste di dare ad un pover'uomo come me?
Grazie.... Maurizio
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Grazie.... Maurizio
Ti consiglio di scaricare ApiGuide,
http://allapi.mentalis.org/agnet/apiguide.shtml
Lì ho trovato questo codice:
' Example by AKriLium-Death (
bump...@hotmail.com
)
' Visit his site at 
http://rift.zeloop.com
'This project needs
' -a Command Button (Command1)
' -a CommonDialog (CommonDialog1)
' -a Label (Label1)
Private Const OF_READ = &H0&
Private Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal
lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile
As Long) As Long
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long,
lpFileSizeHigh As Long) As Long
Dim lpFSHigh As Long
Public Sub GetInfoF(FilePath As String)
    Dim Pointer As Long, sizeofthefile As Long
    Pointer = lOpen(FilePath, OF_READ)
    'size of the file
    sizeofthefile = GetFileSize(Pointer, lpFSHigh)
    Label1.Caption = sizeofthefile & " bytes"
    lclose Pointer
End Sub
Private Sub command1_Click()
    CommonDialog1.ShowOpen
    GetInfoF CommonDialog1.filename
End Sub
Private Sub Form_Load()
    With CommonDialog1
        .DialogTitle = "Select a file"
        .Filter = "All the files|*.*"
    End With
    Command1.Caption = "Select a file"
End Sub

 lpFileSizeHigh As Long) As Long
...
intanto grazie per il consiglio.
quale e' la dimensione massima che puo' essere "letta" da un sistema del
genere? 
Mi verrebbe da pensare un numero a 64 bit, se non fosse per il fatto che
c'e' da tenere presente il segno per i numeri.
Mi spiego meglio:
Nel caso in cui il file sia grande, ad esempio, 3 GB, questa funzione cosa
restituisce?
La parte alta a 0 e la bassa con l'implementazione a 2 (e quindi negativo)?


 lpFileSizeHigh As Long) As Long
Beh, ci sei andato vicino :)
http://allapi.mentalis.org/apilist/GetFileSizeEx.shtml
Ciao 

 
http://allapi.mentalis.org/apilist/GetFileSizeEx.shtml
Si era il link per il download in locale :)

 La parte alta a 0 e la bassa con l'implementazione a 2 (e quindi negativo)?
Ti posso dire che un file da 5Gb circa mi da:
961876992 bytes
Non so come possa "ragionare"...
Prova a ripartire da qui :\
http://www.google.com/search?hl=it&q=vb6+grande+getfilesize&btnG=Cerca&lr=

 
http://www.google.com/search?hl=it&q=vb6+grande+getfilesize&btnG=Cerca&lr=
Ma vaaa!
Restituisce sbagliato perchč usa un Long che č un 32bit!
Dai un occhio al mio post qui sotto.
Ciao 

 
http://allapi.mentalis.org/apilist/GetFileSizeEx.shtml
...
Eccone un altro con questa api!
Oh, sul mio pc, XP Pro s.p.2 ed il visualizzatore delle API, questa non la
vedo. Nessun problema per l'api GetFileSize, ma questa che restituisce un
decimal, proprio non la vedo! Uffa


 decimal, proprio non la vedo! Uffa
Se proprio la vuoi vedere si guarda MSDN, non un elenco qualunque.
Prova l'esempio della pagina che ti ho indicato: non sbaglia di un byte 
(provato su un file da 8Gb).
Ciao 

> vedo.
Curiosità: quale visualizzatore api?
Quello di VB6 uscito il 1998, mentre la funzione riguarda win2000 e 
successivi?
Se proprio vuoi prova il visualizzatore api di allapi come ti diceva Andrea.
Ciao 

 Se proprio vuoi prova il visualizzatore api di allapi come ti diceva Andrea.
...
Sara' fatto
grazie a tutti
