Ver Mensaje Individual
  #1  
Antiguo 01-05-2007
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 322
Reputación: 21
amadis Va por buen camino
Question STringGrid: cargar archivo previamente guardado.

Como les Va Gente!

Quisiera saber de que manera se puede leer un archivo creado con este procedimiento que encontré en el foro

Código Delphi [-]
procedure Guardar(Archivo: String; Grid: TStringGrid);
var
  i: integer;
begin
  with TStringList.Create do
  try
    for i:= 0 to Grid.RowCount - 1 do
      Add(Grid.Rows[i].CommaText);
    SaveToFile(Archivo);
  finally
    Free;
  end;
end;

Encontre esta forma de leer archivos, a la cual el cambie el SEPARADOR por COMA, pero no respeta las columnas ni filas.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Const
Separador = ' '; //Este es el caracter que utilizamos de separador;
Var
Fichero : TStrings;
Sig : Integer;
Pos : Integer;
Copy_Ini : Integer;
Copy_Fin : Integer;
Longitud : Integer;
cTemp : String;
I, J, K : Integer;
////////////////////
Function pos_str(Cad : String; Car: Char; Ini : Integer) : Integer;
var
Cnt :Integer;
Longitud :Integer;
begin
Result := 0;
Longitud := Length(cad);
Cnt := Ini;
repeat
    Inc(Cnt);
    //Controlamos el separador y saltos de línea
    if (Cad[Cnt]=Car) or (Cad[Cnt]=#10) or (Cad[Cnt]=#13) then
    begin
        Result := Cnt -Ini;
        break;
    end;
until (Cnt > longitud) ;
end;
///////////////////////
begin
Fichero := TStringList.Create;
Fichero.LoadFromFile('Unit1.pas');  // Fichero a procesar
Longitud:=Length(Fichero.Text);
cTemp := Fichero.Text;
Fichero.Clear;
Pos:=0;

repeat
    Sig := Pos_Str(cTemp,Separador,Pos);
    if (sig=0) then break;
    Inc(pos,sig);
    copy_ini:=(pos-sig)+1;
    copy_fin:=sig-1;
    Fichero.Add(Trim(copy(cTemp,copy_ini,copy_fin)) );
until (sig=0);
//Acomodamos el StringGrid a la longitud del fichero, dependiendo del número de columnas.
StringGrid1.RowCount := (Fichero.Count -1) div StringGrid1.ColCount -1;
//Efectuamos el relleno del StringGrid

  K := 0;
  with StringGrid1 do
    for I := 0 to ColCount - 1 do
      for J:= 0 to RowCount - 1 do
        begin
          Cells[I,J] := Fichero[K]; 
          inc(K);
        end;

Fichero.Free;
end;
Responder Con Cita