Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   stringgrid speichern (https://www.delphipraxis.net/164330-stringgrid-speichern.html)

Hartfrid Krause 8. Nov 2011 13:57

stringgrid speichern
 
Wie kann ich strings, die in einer stringgrid angezeigt werden als textdatei speichern.
Gibt es eine einfachere Möglichkeit jenseuits von filestreams?

Bummi 8. Nov 2011 14:17

AW: stringgrid speichern
 
nur als Vorschlag, in der Formatierung könntest Du es auch per Copy und Paste in Excel einfügen

Delphi-Quellcode:
Procedure SaveStringGrid(sg:TStringgrid;const fn:String);
const
 C_ZBr=#13#10;
 C_Tab=#9;
var
  Y,X:Integer;
  s:String;
  sl:TStringlist;
 Function GetDelim:String;
  begin
    if x < (sg.Rows[Y].Count - 1) then Result := C_Tab else Result := C_ZBr;
  end;
begin
  for Y := 0 to sg.RowCount -1 do
     begin
     For x := 0 to sg.Rows[Y].Count - 1 do s := s + sg.Rows[Y][X] + GetDelim;
     end;
  sl:=TStringlist.Create;
  try
    sl.Text := s;
    sl.SaveToFile(fn);
  finally
    sl.Free;
  end;
end;


Procedure LoadStringGrid(sg:TStringgrid;const fn:String);
const
 C_ZBr=#13#10;
 C_Tab=#9;
var
  sl:TStringList;
  y,x:Integer;
begin
  sl:=TStringlist.Create;

  try
    sl.LoadFromfile(fn);
    sg.RowCount := sl.Count;
    for y := 0 to sl.Count -1 do
        begin
           sg.Rows[y].Text := StringReplace(sl[y],C_Tab,C_ZBr,[rfReplaceAll]);
        end;
  finally
    sl.Free;
  end;
end;

Steku 8. Nov 2011 14:25

AW: stringgrid speichern
 
Hatte ich mal hier gefunden:

http://www.swissdelphicenter.ch/de/showcode.php?id=941

Gruß,
Steku


Nachtrag: Wenn ich mich recht erinnere, hat das JVCL Stringgrid sogar die Methoden Load/SaveToFile, bzw. Load/SaveToStream
mit an Board...

DeddyH 8. Nov 2011 16:00

AW: stringgrid speichern
 
Das sollte auch funktionieren:
Delphi-Quellcode:
procedure SaveStringGrid(Grid: TStringGrid; Filename: TFilename);
var
  List, Zeile: TStringlist;
  i: integer;
begin
  Assert(Assigned(Grid));
  List := TStringlist.Create;
  try
    Zeile := TStringlist.Create;
    try
      for i := 0 to Grid.RowCount - 1 do
        begin
          Zeile.Assign(Grid.Rows[i]);
          Zeile.Delimiter := #255;
          List.Add(Zeile.DelimitedText);
        end;
    finally
      Zeile.Free;
    end;
    List.SaveToFile(Filename);
  finally
    List.Free;
  end;
end;

procedure LoadStringGrid(Grid: TStringGrid; Filename: TFilename);
var
  List, Zeile: TStringlist;
  i: integer;
begin
  Assert(Assigned(Grid));
  List := TStringlist.Create;
  try
    List.LoadFromFile(Filename);
    if Grid.RowCount < List.Count then
      Grid.RowCount := List.Count;
    Zeile := TStringlist.Create;
    Zeile.Delimiter := #255;
    Zeile.StrictDelimiter := true;
    try
      for i := 0 to List.Count - 1 do
        begin
          Zeile.DelimitedText := List[i];
          if Grid.ColCount < Zeile.Count then
            Grid.ColCount := Zeile.Count;
          Grid.Rows[i].Assign(Zeile);
        end;
    finally
      Zeile.Free;
    end;
  finally
    List.Free;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz