![]() |
stringgrid speichern
Wie kann ich strings, die in einer stringgrid angezeigt werden als textdatei speichern.
Gibt es eine einfachere Möglichkeit jenseuits von filestreams? |
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; |
AW: stringgrid speichern
Hatte ich mal hier gefunden:
![]() Gruß, Steku Nachtrag: Wenn ich mich recht erinnere, hat das JVCL Stringgrid sogar die Methoden Load/SaveToFile, bzw. Load/SaveToStream mit an Board... |
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:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz