Ver Mensaje Individual
  #1  
Antiguo 12-04-2006
Avatar de halcon_rojo
halcon_rojo halcon_rojo is offline
Miembro
 
Registrado: abr 2006
Posts: 14
Reputación: 0
halcon_rojo Va por buen camino
Post Cual la capacidad de un TStringList?

Hola a todos mi duda es si el TStringList tiene alguna limitacion en cuanto al tamaño (o numero de lineas) del archivo con el que trabaja. Mi problema es que tengo una rutina que carga datos desde un archivo de texto a una tabla DBF y hasta ahora el archivo de texto no pasaba los 1.3 MB (como 29mil registros que tarda mas de 10 min) asi que mi rutina funciona bien, pero se presento que el archivo que necesito cargar es de aprox. 6MB con algo mas de 80mil registros. Mi rutina a parte de que tarda un monton, se corta a medias y no se por que.
este es mi codigo (algo resumido):
Código Delphi [-]
begin
  Archivo:= TStringList.Create;
  Linea:= TStringList.Create;
  linea.Te
  try
    Linea.Delimiter:= chr(124); // Caracter pipe
    Linea.QuoteChar:= ' ';
    Archivo.LoadFromFile(filetxt);
    progressbar1.Min := 0;
    progressbar1.Max := Archivo.Count - 2;
    for i:= 0 to Archivo.Count - 1 do
    begin
      // uso lo siguiente para capturar sin problemas datos con espacios en blanco        
      Linea.DelimitedText:= StringReplace(Archivo[i],chr(32),'(_)',[rfReplaceAll]);
           with datamodule1.datos do
           begin 
                    compras.Append;
                    compras.edit;
                    comprasNIT.AsString      := Linea[1];
                    comprasRSOCIAL.AsString  := StringReplace(Linea[2],'(_)',chr(32),[rfReplaceAll]);
                    comprasNFACTURA.AsString := Linea[3];
                    // etc....
                    compras.Post;
            end; // with
        if i <= progressbar1.Max then progressbar1.Position := i;
        Application.ProcessMessages;
    end; //for
  finally
    Archivo.Free;
    Linea.Free;
 end;
se puede hacer esto de otra manera cosa que acepte archivos de texto bastante grandes y que el proceso no tarde mucho?
Responder Con Cita