https://foro.gambas-es.org/viewtopic.php?f=5&t=7848&p=47280#p47280
-----------------------------------
tincho
Sabado, 21 Diciembre 2019, 19:41

Funcion Que Devuelve Información De Un Archivo.
-----------------------------------
Hola a todos.
Necesitaba averiguar los [b][u]inodes[/u][/b] de los archivos, para un programa que estoy haciendo para acomodar fotos por fechas.
Como saben gambas tiene la función [b][u]Stat[/u][/b] que sirve para obtener información de un archivo (también de un directorio) pero, no se por que, no devuelve el [b][u]inode[/u][/b] como [url=https://www.gnu.org/software/coreutils/stat]stat de GNU (que devuelve 30 datos) así que se me ocurrió esta función que aquí comparto, con eficiencia mejorable, claro esta, pero funciona.
Si a alguien se le ocurre una forma mejor, no dude en comentarla.
[code linenumbers=false syntax=gambas]
Public Function XStat(f As String) As Collection

  Dim cn As New Collection
  Dim ino As String
  Dim ex As String
  Dim mim As String
  Dim ver As String

  If Exist(f) Then
    If Stat(f).Type = gb.File Then
      cn.Add(Stat(f).Auth, "Auth")
      cn.Add(Stat(f).Group, "Group")
      cn.Add(Stat(f).Hidden, "Hidden")
      cn.Add(Stat(f).LastAccess, "LastAccess")
      cn.Add(Stat(f).LastChange, "LastChange")
      cn.Add(Stat(f).LastModified, "LastModified")
      cn.Add(Stat(f).Link, "Link")
      cn.Add(Stat(f).Mode, "Mode")
      cn.Add(Stat(f).Path, "Path")
      cn.Add(Stat(f).Perm, "Perm")
      cn.Add(Stat(f).SetGID, "SetGID")
      cn.Add(Stat(f).SetUID, "SetUID")
      cn.Add(Stat(f).Size, "Size")
      cn.Add(Stat(f).Sticky, "Sticky")
      cn.Add(Stat(f).Time, "Time")
      cn.Add(Stat(f).Type, "Type")
      cn.Add(Stat(f).User, "User")
      Shell "stat -c %i '" & f & "' 2>&1" To ino
      ino = Replace(ino, "\n", "")
      cn.Add(ino, "Inode")
      ex = File.Ext(Stat(f).Path)
      cn.Add(ex, "Ext")
      mim = DesktopMime.FromFile(f).Type
      cn.Add(mim, "Mime")
      ver = fil.FileVersion(f)
      cn.Add(ver, "Version")
    Endif
  Endif
  Return cn
End
[/code]

Saludos.


