Tengo una duda sobre como poner en distintos labels, los datos de un archivo, por ejemplo:
C:\Foto.gif
Tamaño:
Resolucion:
Ultimo acceso:
Creado:
Modificado:
etc.
Si me pueden resolver ese problema se los agredecería mucho


Facundo
| |||
![]() Hola a todos: Tengo una duda sobre como poner en distintos labels, los datos de un archivo, por ejemplo: C:\Foto.gif Tamaño: Resolucion: Ultimo acceso: Creado: Modificado: etc. Si me pueden resolver ese problema se los agredecería mucho ![]() ![]() Facundo |
| ||||
Las fechas de ultimo acceso, modificacion y de creacion las puedes sacar mediante el API de Windows. Esto es parte del codigo que uso en uno de mis programas que recogeria dicha informacion de un archivo:
Código:
La resolucion de una imagen ya dependeria de su formato. Conociendo su formato se pueden leer los bytes que contienen la informacion de anchura, altura y bits por pixel del color.Option Explicit Private Const MAX_PATH = 260 Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long Private Sub Form_Load() Dim strFile As String, FileName As String, Path As String Dim fHandle As Long Dim FileInfo As WIN32_FIND_DATA Dim LastAccess As Double, Created As Double, Modified As Double Me.AutoRedraw = True 'Introducimos una ruta y nombre de archivo: strFile = InputBox("Ruta y nombre del archivo:") If strFile = vbNullString Then Exit Sub 'Obtenemos la informacion del archivo: fHandle = FindFirstFile(strFile, FileInfo) Call FindClose(fHandle) 'Obtenemos el nombre y la ruta del archivo por separado: FileName = Right$(strFile, Len(strFile) - InStrRev(strFile, "\")) Path = Left$(strFile, Len(strFile) - Len(FileName)) With FileInfo 'Formateamos los datos: LastAccess = FileTimeToDouble(.ftLastAccessTime, True) Created = FileTimeToDouble(.ftCreationTime, True) Modified = FileTimeToDouble(.ftLastWriteTime, True) End With 'Mostramos los datos: Print "Archivo: " & FileName Print "Ruta de acceso: " & Path Print "Tamaño: " & FormatFileSize(FileInfo.nFileSizeLow) Print "Ultimo acceso: " & FormatFileDate(LastAccess) Print "Creado: " & FormatFileDate(Created) Print "Modificado: " & FormatFileDate(Modified) End Sub 'Convierte los campos de una estructura FILETIME a un valor de tipo Double: Private Function FileTimeToDouble(ftUTC As FILETIME, Localize As Boolean) As Double Dim ft As FILETIME Dim st As SYSTEMTIME Dim d As Double Dim t As Double If Localize Then Call FileTimeToLocalFileTime(ftUTC, ft) Else ft = ftUTC End If Call FileTimeToSystemTime(ft, st) FileTimeToDouble = DateSerial(st.wYear, st.wMonth, st.wDay) + _ TimeSerial(st.wHour, st.wMinute, st.wSecond) End Function 'Devuelve una cadena de texto con la fecha y hora formateada: Public Function FormatFileDate(ByVal dt As Double) As String FormatFileDate = Format(dt, "long date") & " " & _ Format(dt, "long time") End Function 'Devuelve una cadena de texto con la cantidad de bytes formateada a la medida adecuada: Public Function FormatFileSize(ByVal Size As Long) As String Dim sRet As String Const KB& = 1024 Const MB& = KB * KB If Size < KB Then sRet = Format(Size, "#,##0") & " bytes" Else Select Case Size \ KB Case Is < 10 sRet = Format(Size / KB, "0.00") & " KB" Case Is < 100 sRet = Format(Size / KB, "0.0") & " KB" Case Is < 1000 sRet = Format(Size / KB, "0") & " KB" Case Is < 10000 sRet = Format(Size / MB, "0.00") & " MB" Case Is < 100000 sRet = Format(Size / MB, "0.0") & " MB" Case Is < 1000000 sRet = Format(Size / MB, "0") & " MB" Case Is < 10000000 sRet = Format(Size / MB / KB, "0.00") & " GB" End Select sRet = sRet & " (" & Format(Size, "#,##0") & " bytes)" End If FormatFileSize = sRet End Function Salu2...
__________________ Proyecto dx_lib32 (http://dxlib32.se32.com) Libreria DLL ActiveX para el desarollo de juegos y programas multimedia en Visual Basic 6.0 con la potencia de DirectX Dice un dicho que "el que calla otorga". En internet tenemos otro que dice "nunca alimentes a un troll" que viene a decir "dejale hablar solo que se ya se cansara de incordiar". Solo los necios creen tener la razon con la ultima palabra. |