Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-04-2012
gusspagano gusspagano is offline
Miembro
 
Registrado: mar 2012
Posts: 47
Poder: 0
gusspagano Va por buen camino
filesize

Tengo un *.txt con 418 lineas, y la función filesize me dice que tengo 114 lineas nada más, alguien sabe por que?

Gracias.
Responder Con Cita
  #2  
Antiguo 19-04-2012
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.281
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
¿Puedes poner un ejemplo cómo estás utilizando esa función?
Según la ayuda FileSize retorna el número de registros de un fichero, que no es lo mismo que el número de líneas.
__________________
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
  #3  
Antiguo 19-04-2012
gusspagano gusspagano is offline
Miembro
 
Registrado: mar 2012
Posts: 47
Poder: 0
gusspagano Va por buen camino
ahh, entonces no es lo mismo linea que registro!!

esto es lo que hago:


Código Delphi [-]
procedure TForm1.btnOkClick(Sender: TObject);
var
  origen,destino,archivo: string;
  lista: textfile;
  lineas,contador,porcentaje: integer;
begin
  origen:=edtOrg.Text;
  destino:=edtDtn.Text;
  assignfile (lista, opdLst.FileName);
  reset (lista);
  lineas:=filesize(lista);
  showmessage (inttostr(lineas));
  contador:=0;
  porcentaje:=0;
  readln (lista,archivo);
  while not Eof (lista) do
  begin
    copyfile(pchar(origen+'\'+archivo),pchar(destino+'\'+archivo),true);
    readln (lista,archivo);
    contador:=contador+1;
    porcentaje:=trunc(contador*(100/lineas));
    Form1.ProgressBar1.Position:=porcentaje;
  end;
  copyfile(pchar(origen+'\'+archivo),pchar(destino+'\'+archivo),true);
  closefile (lista);
  form1.ProgressBar1.Position:=0;
  showmessage ('MISSION COMPLETE !!');
end;
Responder Con Cita
  #4  
Antiguo 19-04-2012
gusspagano gusspagano is offline
Miembro
 
Registrado: mar 2012
Posts: 47
Poder: 0
gusspagano Va por buen camino
Cita:
Empezado por gusspagano Ver Mensaje
ahh, entonces no es lo mismo linea que registro!!

esto es lo que hago:


Código Delphi [-]
procedure TForm1.btnOkClick(Sender: TObject);
var
  origen,destino,archivo: string;
  lista: textfile;
  lineas,contador,porcentaje: integer;
begin
  origen:=edtOrg.Text;
  destino:=edtDtn.Text;
  assignfile (lista, opdLst.FileName);
  reset (lista);
  lineas:=filesize(lista);
  showmessage (inttostr(lineas));
  contador:=0;
  porcentaje:=0;
  readln (lista,archivo);
  while not Eof (lista) do
  begin
    copyfile(pchar(origen+'\'+archivo),pchar(destino+'\'+archivo),true);
    readln (lista,archivo);
   contador:=contador+1;
    porcentaje:=trunc(contador*(100/lineas));
    Form1.ProgressBar1.Position:=porcentaje;
  end;
  copyfile(pchar(origen+'\'+archivo),pchar(destino+'\'+archivo),true);
  closefile (lista);
  form1.ProgressBar1.Position:=0;
  showmessage ('MISSION COMPLETE !!');
end;
perdón, me faltó decir que según yo, usaría el número de lineas para luego mostrar el avance en una barra de proceso.

Eso es lo que intento hacer, algo sencillo para ustedes seguramente.
Responder Con Cita
  #5  
Antiguo 19-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola gusspagano.

Para calcular las líneas del archivo de texto podrías hacer:
Código Delphi [-]
function FileNumberLines(Nombre: string): Int64;
begin
  if FileExists(Nombre) then
    with TStringList.Create do
    try
      LoadFromFile(Nombre);
      Result:= Count;
    finally
      Free;
    end
  else
    Result:= -1;
end;

Y si el archivo llegara a ser tan enorme que no fuera viable usar TStrings:
Código Delphi [-]
function BigFileNumberLines(Nombre:string): Longint;
var
  Num: Integer;
  f: TextFile;
  s: string;
begin
  Num:= 0;
  AssignFile(f,Nombre);
  try
    Reset(f);
    while not eof(f) do
    begin
      Readln(f,s);
      Inc(Num);
    end;
    Result:= Num;
    CloseFile(f);
  except
   Result:= -1;
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-04-2012 a las 19:34:52. Razón: corregir identación
Responder Con Cita
  #6  
Antiguo 19-04-2012
gusspagano gusspagano is offline
Miembro
 
Registrado: mar 2012
Posts: 47
Poder: 0
gusspagano Va por buen camino
Gracias ecfisa, lo voy a intentar...
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
File of byte y filesize madmai Varios 1 11-07-2008 18:49:43


La franja horaria es GMT +2. Ahora son las 15:04:56.


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