Ver Mensaje Individual
  #2  
Antiguo 18-11-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Yo trataría de escribir en el fichero destino directamente.
La forma más simple es AssignFile()..Rewrite()..Write()/WriteLn..CloseFile().

Además de esto, recuerda siempre utilizar los bloques try..finally y try..except.

Código Delphi [-]
procedure lector;
var
  i, j : integer;
  milista : TStringList;
  // listafinal : TStringList;
  s : string;
  F : TextFile;
  FileName : string;
begin
  // listafinal := TStringList.Create;
  // Abro el fichero destino
  FileName :=   dirE + 'final.txt';
  AssignFile(F, FileName);
  try
    // Si existe lo reescribo
    Rewrite(F);
    
    milista := TStringList.Create;
    try
      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);
          // Escribo la linea en el fichero destino
          WriteLn(F, form1.stringgrid7.Rows[i+3].DelimitedText);
        end;
        
        milista.Clear;
      end;
    finally
      milista.Free;
    end;

    // listafinal.SaveToFile(dirE+'final.txt');
    // Cierro fichero destino    
    CloseFile(F);
  except
    on e: Exception do
      ShowMessage('Error al crear fichero : ' + FileName + #13#10 + e.Message);
  end;
  
  // listafinal.Free;
end;

Última edición por duilioisola fecha: 18-11-2022 a las 09:01:26.
Responder Con Cita