Título: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: _CrisiS_ en 8 Septiembre 2010, 04:55 am Hola amigos estoy usando la APi GetDiskFreeSpaceEx para calcular los espacios de los discos. Bueno cuando recibo el tamaño de bytes de un label, comparando fisicamente con la particiion (ejm D:) es la misma , ahora mi problema creo q es en la logica, o en los tipo de dato q aplico para convertir esos datos En GB. (redondeados a 2 decimales), acontinuacion pondre el codigo (resumido de lo que uso) Código: 'Api Private Declare Function GetDiskFreeSpaceEx Lib "Kernel32" Alias "GetDiskFreeSpaceExA" (ByVal RootPathName As String, ByRef lpFreeBaytesAvailableToCaller As [b]Long,[/b] ByRef lpTotalNumberofBytes As [b]Long[/b], ByRef lpTotalNumberofFreeBytes As [b]Long[/b]) As Integer Private Sub MostrarDatos() Dim Disco As String Dim Capacidad As Single Dim Libre As Long Dim PorcentajeUsado As Long Dim PorcentajeLibre As Long Dim retorno As Integer ... retorno = GetDiskFreeSpaceEx(Disco, Libre, Capacidad, Libre) Capacidad = Capacidad / 10000 Libre = Libre / 10000 'MessageBox.Show(Libre) Capacidad = Capacidad * 10000 / 1000000 Libre = Libre * 10000 / 1000000 Label1.Text = String.Format(Capacidad, "0. 00") & "Megabytes" GB1_label.Text = Math.Round(Capacidad / 1024, 2) & " GB" Label2.Text = String.Format(Capacidad - Libre, "0.00") & " MegaBytes Usados" GB2_label.Text = Math.Round(Capacidad - Libre, 2) Label3.Text = String.Format(Libre, "0.00") & " MegaBytes Libres" PorcentajeLibre = Libre * 100 / Capacidad Label4.Text = String.Format(PorcentajeLibre, "0.00") & " % de Bytes Libres" PorcentajeUsado = (Capacidad - Libre) * 100 / Capacidad Label5.Text = String.Format(PorcentajeUsado, "0.00") & " % de Bytes Utilizados" Bueno el problema que tengo es que las equivalencias que me salen son las "reales", como pueden apreciar en la siguiente imagen: (http://i166.photobucket.com/albums/u108/Elcondecri/ERRORES/logic.jpg) Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: BlackZeroX en 8 Septiembre 2010, 07:49 am Edito:
Solo por aclarar en currency al obtener los valores salen con coma decimal por ello hay que multiplicar por 10000 para eliminarla, aun que puede trabajarse aun con ella... Edicion 2 en tu codigo falta dividir una vez mas entre 1024 para obtener los Gigas!¡, en espacio utilizado como en espacio libre Código
Dulce Infierno Lunar!¡. Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: _CrisiS_ en 9 Septiembre 2010, 04:29 am vaya ese code es en vb6 nop? yo lo nesesito para vb net, aunque si me sirvio para ciertos puntos.
O si desean les subo mi proy para que no tengan q crearlo desde 0 Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: _katze_ en 9 Septiembre 2010, 05:02 am _Crisis_ te estaria agradecido porq no puedo todavia usar apis ni nada por el estilo que tenga que ver con vb6 en vb.net !
Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: _CrisiS_ en 9 Septiembre 2010, 05:51 am Bueno ay te lo dejo:
Código: http://www.4shared.com/file/kCNX-1bA/HDmedidor2.html espero que puedas solucionar el problema logico q tiene mi proy. X)P.D > No piratearlo please XD!!!! Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: BlackZeroX en 9 Septiembre 2010, 06:49 am .
El codigo que te he dejado usa esactamente lo mismo que el tuyo, la API GetDiskFreeSpaceEx, asi que no te van a hacer ningun trabajo!¡. P.D.: Esta sección es vb6 NO .NET asi que no creo que alguien te lo vaya a hacer ( almenos yo no lo hare, con el ejemplo que te deje arriba es suficiente al respecto de la API Dada, ademas no tengo instalado VS NET ) Edito: Acabo de ver tu Source con el block de notas y estas programando como si fuese vb6, yo no usaria On Error Resume Next en .NEt usaria el Try Catch, entre otras cosas propias de .NET Dulces Lunas!¡. Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: _CrisiS_ en 9 Septiembre 2010, 06:55 am a chispas no me abia percatado que NET estaba en un subforo, jejej grave problema mio sorry X_X, Pero bueno respondiendote tu ejemplo va bien en vb6 pero al migrarlo a net da varios errores los cuales no llego a corregir todos, y me estanco alli X)
Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: BlackZeroX en 9 Septiembre 2010, 07:03 am .
indica los errores y te dire que onda!¡. Posiblemente sean los Me.Print susutituyelos por Debug.print (PAra mostrarlos en la venta Inmediato del IDE de .NET), seguramente sea eso!¡. y si no es el unico marca cuales son!¡. Dulces Lunas!¡. Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: _katze_ en 9 Septiembre 2010, 18:10 pm se callo el link man !
Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: _CrisiS_ en 11 Septiembre 2010, 16:56 pm Disculpen por la demora =P
aver katze aca ay otro link : http://www.4shared.com/file/p6KK0eTh/HDmedidor2.html BlackZero: mmm aver en: AutoRedraw // no e sun mienbro del proyecto lo mismo con cls GetExpBytes = TmpArr() //el numero de indices es inferior al numero de dimensiones de la matriz indizada Not RefCol // el operador 'Not' no esta definido para el tipo '1-matriz.dimecional de Decimal'. son por el momento los errores q me dan tu code XP Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: _CrisiS_ en 13 Septiembre 2010, 00:21 am Ehhhh alfin despues de tanto sufrir me logro salir =P.
En agradecimientos a todos los que me ayudaron y me aguantaron XD, comparto el proyecto por si alguien mas lo nesesita =D. http://www.4shared.com/file/uCzZk2pD/HDmedidor.html (http://www.4shared.com/file/uCzZk2pD/HDmedidor.html) Título: Re: ayuda con logica para el GetDiskFreeSpaceEx Publicado por: cobein en 13 Septiembre 2010, 03:23 am http://foro.elhacker.net/empty-t214383.0.html;msg1017277#msg1017277
|