How to save and load a TStringGrid to and from a file #177

Here's how the contents of a string grid can be saved to file:

procedure SaveStringGrid(AStringGrid: Grids.TStringGrid;
  const AFileName: SysUtils.TFileName);
var
  F: TextFile;
  I, K: Integer;
begin
  AssignFile(F, AFileName);
  Rewrite(F);
  with AStringGrid do
  begin
    // Write number of Columns/Rows
    Writeln(F, ColCount);
    Writeln(F, RowCount);
    // loop through cells
    for I := 0 to ColCount - 1 do
      for K := 0 to RowCount - 1 do
        Writeln(F, Cells[I, K]);
  end;
  CloseFile(F);
end;

It can be loaded again using this code:

procedure LoadStringGrid(AStringGrid: Grids.TStringGrid;
  const AFileName: SysUtils.TFileName);
var
  F: TextFile;
  Tmp, I, K: Integer;
  StrTemp: String;
begin
  AssignFile(F, AFileName);
  Reset(F);
  with AStringGrid do
  begin
    // Get number of columns
    Readln(F, Tmp);
    ColCount := Tmp;
    // Get number of rows
    Readln(F, Tmp);
    RowCount := Tmp;
    // loop through cells & fill in values
    for I := 0 to ColCount - 1 do
      for K := 0 to RowCount - 1 do
      begin
        Readln(F, StrTemp);
        Cells[I, K] := StrTemp;
      end;
  end;
  CloseFile(F);
end;
Author: Unknown
Contributor: Michael Rockett
Added: 2010/12/17
Last updated: 2010/12/17