Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2006
Avatar de Sotrono
Sotrono Sotrono is offline
Miembro
 
Registrado: abr 2004
Ubicación: Buenos Aires - Argentina
Posts: 396
Poder: 21
Sotrono Va por buen camino
Hola, bienvenido al Club. Te recomiendo que leas la guia de estilo del foro.
La funcion FindFirst y FindNext te van a ser muy utiles para el manejo de archivos.

Bytes...
Responder Con Cita
  #2  
Antiguo 16-04-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
FileSizeByName(ShellListView1.SelectedFolder.PathName);
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
  #3  
Antiguo 16-04-2006
Lapiz_y_Papel Lapiz_y_Papel is offline
Registrado
 
Registrado: abr 2006
Posts: 9
Poder: 0
Lapiz_y_Papel Va por buen camino
FilesizebyName me da el siguiente error al compilar: Identificador no declarado; segun he leido tengo que declarar idglobal en la cláusula Uses
pero aún así me sigue dando el mismo error; ¿Que es lo que hago mal?.

No obstante he encontrado este código

http://www.delphi3000.com/articles/article_2686.asp

que funciona muy bién.




//========================================================
function GetFileSize(FileName: String): Integer;
var
FS: TFileStream;
begin
try
FS := TFileStream.Create(Filename, fmOpenRead);
except
Result := -1;
end;
if Result <> -1 then Result := FS.Size;
FS.Free;
end;
//========================================================

==========================================================
Example of use:
==========================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage(IntToStr(GetFileSize('c:\prova.pdf')));
end;
==========================================================

Saludos.
Responder Con Cita
  #4  
Antiguo 16-04-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
Una vez q agregues la libreria (o unidad, no se como le digan) no deberia dar el error.
la otra manera q plasmas tambien es vàlida
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
  #5  
Antiguo 17-04-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Deberías declarar el Resultado como Int64, por aquello de archivos grandes.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 17-04-2006
Lapiz_y_Papel Lapiz_y_Papel is offline
Registrado
 
Registrado: abr 2006
Posts: 9
Poder: 0
Lapiz_y_Papel Va por buen camino
Todas las respuestas me están siendo de gran ayuda.
Gracias a todos.

Por cierto,¿Donde puñetas encuentro la guía de estilo?.

Gracias otra vez.
Responder Con Cita
  #7  
Antiguo 17-04-2006
Lapiz_y_Papel Lapiz_y_Papel is offline
Registrado
 
Registrado: abr 2006
Posts: 9
Poder: 0
Lapiz_y_Papel Va por buen camino
El Código sigue siendo erróneo

En fin. El caso es que me gustaría comprender como delphi trata los ficheros via API-Windows.
He escrito el siguiente código al objeto de tratar el tipo

TByHandleFileInformation.

Según "Los Tomos de delphi: Núcleo del Api-Win32" ed. Danysoft 1999 viene definido de la siguiente forma:

TByHandleFileInformation = record
dwFileAttributes: DWORD;
ftCreationTime: TFileTime;
ftLastAccessTime: TfileTime;
ftLastWriteTime: TFileTime;
dwVolumeSerialNumber: DWORD;
nFileSizeHigh: DWORD;
nFileSizeLow: DWORD;
nNumberOfLinks: DWORD;
nFileIndexHigh: DWORD;
nFileIndexLow: DWORD;
end.


Pues bien, he escrito el siguiente código al objeto de comprobar el tipo:


procedure TForm1.Button3Click(Sender: TObject);

var

hfile: integer;
fileinfo: tbyhandlefileinformation;
tamaño1,tamaño2:dword;

begin

tamaño1:=0;
tamaño2:=0;

hfile:=CreateFile(PChar(ShelllistView1.SelectedFolder.PathName),
generic_read,0,@security,Open_existing,file_attribute_normal,0);

if (hfile=invalid_handle_value) then Label1.Caption:='Handle Invalido'
else Begin
getfileinformationbyhandle(hfile,fileinfo);
tamaño1:=fileinfo.nFileSizelow;
tamaño2:=fileinfo.nfilesizeHigh;
Label2.Caption:=inttostr(tamaño1);
Label3.Caption:=inttostr(tamaño2);
closehandle(hfile)
end;


tamaño1 siempre me da el valor 2.012.174.878
y tamaño2: 2.010.279.026

mientras que con el código de http://www.delphi3000.com/articles/article_2686.asp

obtengo siempre el tamaño correcto.


¿Que es lo que está mal en el código anterior?

Los tipos están declarados como DWORD, igual que en el registro, las variables inicializadas, el Handle no me da error, etc, etc.

Gracias por vuestro valioso tiempo.

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
Ficheros .dat y .idx fjcg02 Tablas planas 11 29-01-2015 14:38:36
Uso de ficheros CSV ramonibk Varios 6 30-12-2004 10:28:35
Ficheros *.dcu neon Varios 1 24-08-2004 11:19:55
ficheros idx y dat User_Baja_2 Varios 1 26-05-2004 22:00:40
Ficheros .dat & .idx maro Conexión con bases de datos 4 10-02-2004 19:35:35


La franja horaria es GMT +2. Ahora son las 20:38:11.


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