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 24-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Thumbs up Saber el Tamano de un Archivo de texto

buenas madrugadas

estoy haciendo un modulo de migracion de datos, el cual captura datos desde un archivo plano (TXT), entonces para hacer mas vistoso el programita le puse un progressbar

ahora viene mi duda.... como se el tamano del archivo de texto para colocarlo en la propiedad MAX del Progress?

cuanto es lo que lee con esta instruccion? para ir avanzando el progress

Código Delphi [-]
 
ReadLn( F, sLinea );

si alguien pudiera iluminarme.. estare agradecido

saludos
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 24-05-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por ejemplo: FileSize
Responder Con Cita
  #3  
Antiguo 24-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
esto es lo que estoy haciendo

Código Delphi [-]
procedure TfrmActualizacion.CargarArchivoTexto;
var F: TextFile;
sLinea: String;
_Tamanio : Double;
begin
  AssignFile( F, edtArchivo.Text);
//  _Tamanio := FileSize(f);
  Reset( F );
  while not Eof( F ) do
  begin
    ReadLn( F, sLinea );
  end;
  CloseFile( F );
end;

porque cuando quiero ponerle un break no "para" el programa donde se supone debe parar
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 24-05-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por oscarac Ver Mensaje
[..]porque cuando quiero ponerle un break no "para" el programa donde se supone debe parar
Explícate, es que todavía no me he tomado el café y estoy algo dormido
Responder Con Cita
  #5  
Antiguo 24-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
pues creo que ya debo dormir son las 2:30 am aqui

gracias ya lo vere mas tarde cuando vaya a la oficina en 5 horas
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 24-05-2011
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 Oscarac.

Al tratarse de un archivo secuencial creo que vas a tener que hacer una lectura previa para contar el número de líneas si querés que la barra se comporte
de forma representativa. La función FileSize devuelve el número de registros de un archivo tipeado. Si el archivo no tiene tipo, como es el caso, toma por defecto un registro de 128 bytes.

Código Delphi [-]
...
function TForm1.NumFileLines(NomArch: string): Integer;
var
  F: TextFile;
begin
  AssignFile(F,NomArch);
  Reset(F);
  Result:= 0;
  while not Eof(F) do
  begin
    Readln(F);
    Inc(Result);
  end;
  CloseFile(F);
end;

procedure TForm1.ProcessFile(NomArch: string);
var
  F: TextFile;
  s: string;
begin
  AssignFile(F,NomArch);
  Reset(F);
  while not Eof(F) do
  begin
    ReadLn(F, s);
    (* Aca las operaciones que realices. Para el ejemplo muestra en Memo *)
    Memo1.Lines.Add(s);  
    ProgressBar1.StepIt; // Avanza Step posiciones en el ProgressBar
    // Application.ProcessMessages; (* de ser necesario *)
  end;
  CloseFile(F);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ProgressBar1.Max:= NumFileLines('C:\ARCHIVO.TXT');
  ProgressBar1.Step:= 1;
  ProcessFile('C:\ARCHIVO.TXT');
end;
...


Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 24-05-2011 a las 15:50:10.
Responder Con Cita
  #7  
Antiguo 24-05-2011
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 de nuevo.

Se me cruzó una idea para usar FileSize. Un archivo de texto puede ser tomado como un archivo tipado cuyos registros sean de un caracter, es decir
de tipo file of char.

Código Delphi [-]
...
procedure TForm1.ProcessFile(NomArch: string);
var
  F: file of char;
  ch: char;
  s: string;
begin
  AssignFile(F,NomArch);
  Reset(F);
  ProgressBar1.Max:= FileSize(F);
  s:= '';
  while not Eof(F) do
  begin
    Read(F,ch);
    if ch = #13 then
    begin
      (* Aca las operaciones que realices. *)
      Form1.Memo1.Lines.Add(s);
      ProgressBar1.StepBy(Length(s)+2); // Avanza largo de línea en el ProgressBar
      // Application.ProcessMessages; // si lo necesitas
      s:= '';
    end
    else
      s:= s + ch;
  end;
  CloseFile(F);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   ProcessFile('C:\DATOS.txt');
end;
Pero el progreso de la barra es mas parejo en el ejemplo anterior.

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 24-05-2011 a las 15:49:54.
Responder Con Cita
  #8  
Antiguo 24-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
buenos dias....
ya mas repuesto con 4 horitas de sueño conciliador....
creo que optare por la primera opcion, la de contar el numero de Lineas.... como no son muchos los registros, el modulo lo hara rapido...
gracias ecfisa
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #9  
Antiguo 24-05-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Si estás leyendo desde un archivo de texto, ¿por qué no usar la clase TStringList?

Código Delphi [-]
begin
  with TStringList.Create do
    try
      LoadFromFile('Archivo.txt');
      ProgressBar.Max := Count;
      ProgressBar.Position := 0;
      for I := 0 to Pred(Count) do
      begin
        // Procesamos las lineas de texto...
        ProgressBar.StepIt
      end
    finally
      Free
    end
end;


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter

Última edición por maeyanes fecha: 24-05-2011 a las 18:49:39.
Responder Con Cita
  #10  
Antiguo 24-05-2011
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
Cita:
Empezado por maeyanes Ver Mensaje
Si estás leyendo desde un archivo de texto, ¿por qué no usar la clase TStringList?
Siendo que de esa forma se genera un código mas corto, mas simple y mas elegante, la verdad... no se me ocurre por que...

Cuando veo un file o un FileSize, me aflora el pascalero. Ganas de complicarse la vida que tiene uno nomás...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 24-05-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
yyyyy pues......
uno saca el modelo de los ejemplos que se encuentran en la web
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #12  
Antiguo 24-05-2011
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
Cita:
Empezado por oscarac Ver Mensaje
yyyyy pues......
uno saca el modelo de los ejemplos que se encuentran en la web
Ojalá hubiera sido así en mi caso... Le podría echar las culpas a otro !!!

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
como saber el tamaño de un fichero kenychy C++ Builder 13 19-11-2010 16:46:59
Saber el tamaño de un registro winzo Oracle 1 24-11-2009 11:07:17
Como saber cuantas lineas tiene un archivo de texto MRSAM .NET 3 28-03-2007 02:35:00
Como puedo grabar texto en un Archivo de Texto sin Sobreescribir???? AGAG4 Varios 12 08-11-2005 22:53:00
Saber el tamaño de RAM de tu ordenador ciscu Varios 1 28-07-2004 18:13:58


La franja horaria es GMT +2. Ahora son las 06:02:54.


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