Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Sistemas operativos > Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-04-2022
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Tamaño de Ficheros en Windows

Estimados Compañeros:


El tema de obtener el tamaño del fichero es super viejo sin embargo ha realizar la función en Delphi para obtener dicho tamaño no me coincide con el real del ejecutable y además al poner la ruta con el nombre del ejecutable.exe correcto no obtengo nada.

Mi duda es:
1- Porque al poner solamente esto 'C:\EDD TXT TECNOLOGIA\Actualizaciones\PVSis\*.*' si me trae el archivo único que tengo como ejecutable.
pero al poner completo esto: 'C:\EDD TXT TECNOLOGIA\Actualizaciones\PVSis\MiEjecutable.exe' no obtengo el tamaño de archivo.
2- Porque Windows me muestra 49.09 MB y la función me devuelve 50.89MB

Código Delphi [-]
function tamanoFichero (const sFileToExamine: UnicodeString): Int64;//  aquí puse de esta menera para que me reconociera el archivo C:\EDD TXT TECNOLOGIA\Actualizaciones\PVSis\*.*
var
  SR: TSearchRec;
begin
  Result := -1;
  try
    if System.SysUtils.FindFirst(sFileToExamine, faSysFile, SR) = 0 then //se se pone 'C:\EDD TXT TECNOLOGIA\Actualizaciones\PVSis\MiEjecutable.exe' nada trae 
    begin
      {$WARN SYMBOL_PLATFORM OFF}
     Result := UInt64(SR.FindData.nFileSizeLow)+
      (UInt64(SR.FindData.nFileSizeHigh)*UInt64(1 shl 32));
      {$WARN SYMBOL_PLATFORM ON}
      //Mi resultado es Diferente al de las propiedades del ejecutable.
     end;
  finally
    System.SysUtils.FindClose(SR);
  end;
end;

podrían alguien con más experiencia porque sucede esto?

Saludos;

novato_erick
Responder Con Cita
  #2  
Antiguo 03-04-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Puedes compartir el fichero que quieres medir, u otro, para que hagamos una prueba?
A mí me ha funcionado bien con los que he probado.
Responder Con Cita
  #3  
Antiguo 04-04-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Yo lo he probado y también me está funcionando correctamente.
Ten en cuenta que esa función te está devlviendo el tamaño en bytes y tú lo estás poniendo en Megas.

Si revisas el tamaño en bytes de las propiedades debería coincidir.
También ten en cuenta que hay 2 tamaños, el real y el que se ocupa en disco (que suele ser mayor) según los bloques que se utilicen.

__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 04-04-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
61406466/1024/1024=58,56
Responder Con Cita
  #5  
Antiguo 04-04-2022
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Efectivamente el tamaño depende de las unidades y de si es real o en disco.


También puedes usar esta función:
Código Delphi [-]
function _GetFileSize(hFile: THandle): int64;
var
  lo, hi: Cardinal;
begin
  lo:= Windows.GetFileSize(hFile, @hi);
  Result:= hi;
  Result:= (Result shl 32) or lo;
end;


o esta:
Código Delphi [-]
function _GetFileSize(hFile: THandle): int64;
begin
  if not GetFileSizeEx(hFile, Result) then Result:= 0;
end;

Pero en ambos casos debes disponer del Handle del fichero abierto previamente.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tamaño máximo ficheros .ini blaiselaborde Varios 6 30-11-2010 15:32:12
Ficheros png y Windows 2000 Sneak Gráficos 3 12-11-2009 09:44:48
Tamaño de Ventana de Windows pai_delpher API de Windows 2 31-03-2008 12:20:11
Tamaño maximo de ficheros tipo file of JF Sebastian OOP 3 05-02-2007 13:27:06
Aceptar ficheros arrastrados desde el Explorador de Windows. (Drag&Drop) dec Trucos 0 29-06-2006 23:26:36


La franja horaria es GMT +2. Ahora son las 17:31:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi