Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Datos de archivo

Estas en el tema de Datos de archivo en el foro de Visual Basic clásico en Foros del Web. 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: ...
  #1 (permalink)  
Antiguo 26/03/2006, 07:50
 
Fecha de Ingreso: abril-2005
Mensajes: 18
Antigüedad: 19 años
Puntos: 0
Pregunta Datos de archivo

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 . Un saludo
Facundo
  #2 (permalink)  
Antiguo 26/03/2006, 21:59
Avatar de [EX3]  
Fecha de Ingreso: marzo-2006
Ubicación: Fuenlabrada, Madrid
Mensajes: 203
Antigüedad: 18 años, 1 mes
Puntos: 1
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:
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 
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.

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.

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:47.