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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-11-2022
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
out of memory usando TStringList

hola,


Debo leer 8784 ficheros de texto con 3600 lineas con datos numericos cada uno. De cada uno de ellos debo seleccionar un dato x cada linea, y convertirlos a una fila con los 3600 datos copiados. Y luego con cada linea hacer un fichero final con 366 lineas, cada una con 3600 datos numericos.
Leo sin problema los 8784 ficheros iniciales, los organizo en un stringgrid para ir monitoriando que todo esta ok y luego los adiciono a un stringlist para salvarlo a un nuevo fichero con todos los datos organizados.
La tabla lleva 3 filas encima con encabezados de tabla que se incluyen tambien en el fichero final.
Funciona correctamente hasta el fichero 6378 que crea un fichero nuevo de 240 MB.
Pero cuando intento añadir mas ficheros da error "out of memory".
Les dejo mi codigo para que me digan que pudiera hacer diferente.


Código Delphi [-]
procedure lector;
var
  i,j:integer;
  milista,listafinal:TStringList;
  s:string;
begin
 milista:=TStringList.Create;
 listafinal:=TStringList.Create;
 for i := 0 to form1.CheckListBox1.Count-1 do begin
  Application.ProcessMessages;
  if form1.CheckListBox1.Checked[i] then begin
   milista.LoadFromFile(form1.CheckListBox1.Items[i]);
   form1.stringgrid7.Cells[0,i+3]:=inttostr(i+1);
   s:=ExtractFileName(form1.checklistbox1.items.Strings[i]); 
   form1.stringgrid7.Cells[1,i+3]:=copy(s,0,4);
   form1.stringgrid7.Cells[2,i+3]:=inttostr(Juliana(copy(s,0,13)));
   form1.stringgrid7.Cells[3,i+3]:=copy(s,14,4);
   form1.stringgrid7.rowCount:=i+4;
   for j:=4 to milista.Count-3 do begin
    if i=0 then begin // pongo los encabezados de tabla
     form1.stringgrid7.colCount:=j+1;
     form1.stringgrid7.Cells[j,0]:=inttostr(j-3-numX*trunc((j-4)/numX));
     form1.stringgrid7.Cells[j,1]:=inttostr( trunc((j-4)/numY)+1 );
     form1.stringgrid7.Cells[j,2]:=inttostr(j-3);
    end;
    form1.stringgrid7.Cells[j,i+3]:=copy(milista.Strings[j+2],28,10);
   end;

   form1.stringgrid7.Rows[i+3].Delimiter:=' ';
   listafinal.Add(form1.stringgrid7.Rows[i+3].DelimitedText);

  end;
  milista.Clear;
 end;
 milista.Free;
 listafinal.SaveToFile(dirE+'final.txt'); //aqui es donde da el error
 listafinal.Free;
end;
Gracias,
A
Responder Con Cita
 



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
Out of Memory javicho_villa Varios 12 04-10-2019 23:54:49
Out Of Memory Cesargt Varios 10 21-10-2015 20:53:51
Out of memory Firewind Lazarus, FreePascal, Kylix, etc. 3 20-07-2010 12:33:32
Out of Memory luxus OOP 5 30-09-2008 23:11:54
Dudas usando la clase TStringList blamsa Varios 6 27-05-2005 16:50:48


La franja horaria es GMT +2. Ahora son las 11:50:43.


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