![]() |
Wie kann man den Inhalt eines Stringrids speichern und laden
Wie kann man den Inhalt eines Stringrids speichern und laden?
DaDu |
ja, wo denn ? Mit den Grids bin ich auch gerade beschäftigt. Soll das in eine Datei oder wo rein ?
|
Delphi-Quellcode:
Autor Unbekannt. (Der Kerl ist verdammt produktiv, wenn ich mir das so ankucke. :mrgreen:)
// Hiermit können StringGrids gespeichert und geladen werden,
// wobei Inhalt und Form von einem anderweitig gespeicherten // Grid in das aktuelle Grid geholt werden können. // Siehe auch Stringgrids umklappen // Getestet mit D4 unter Win98 procedure gridspeichern(grd:TStringGrid;Datei:string); var sl:TStringlist; x,y:integer; begin sl:=TStringlist.create; sl.add(inttostr(grd.colcount)); sl.add(inttostr(grd.rowcount)); for x:=0 to grd.ColCount-1 do for y:=0 to grd.RowCount-1 do sl.add(grd.cells[x,y]); for x:=0 to grd.ColCount-1 do sl.add(inttostr(grd.ColWidths[x])); for x:=0 to grd.RowCount-1 do sl.add(inttostr(grd.RowHeights[x])); sl.add(inttostr(grd.clientwidth)); sl.add(inttostr(grd.clientheight)); sl.add(inttostr(ord(grd.ScrollBars))); sl.savetofile(datei); sl.free; end; procedure gridladen(grd:TStringGrid;Datei:string;angleichen:boolean); var sl:TStringlist; x,y,z:integer; begin sl:=TStringlist.create; sl.loadfromfile(datei); grd.colcount:=strtoint(sl.strings[0]); grd.rowcount:=strtoint(sl.strings[1]); z:=2; for x:=0 to grd.ColCount-1 do for y:=0 to grd.RowCount-1 do begin grd.cells[x,y]:=sl.strings[z]; inc(z); end; if angleichen then begin for x:=0 to grd.ColCount-1 do begin grd.ColWidths[x]:=strtoint(sl.strings[z]); inc(z); end; for x:=0 to grd.RowCount-1 do begin grd.RowHeights[x]:=strtoint(sl.strings[z]); inc(z); end; grd.clientwidth:=strtoint(sl.strings[z]); grd.clientheight:=strtoint(sl.strings[z+1]); grd.ScrollBars:=TScrollStyle(strtoint(sl.strings[z+2])); end; sl.free; end; procedure TForm1.Button1Click(Sender: TObject); begin gridspeichern(StringGrid1,'c:\test.grd'); end; procedure TForm1.Button2Click(Sender: TObject); begin gridladen(StringGrid1,'d:\test2.grd',true); end; |
hy,
ich habe hete in der scule genau die funktion geschrieben die stringgrids zuerst in eine listbox kopiert und man diese datei dann ueber en save dialog speichern kann, und auch die lade funktion! werde sie orgen hier posten! cu |
Warum denn so aufwendig?
Das Prinzip ist einfach (in Luckie's Source auch schon angedeutet): Speichern, wie viele mal wie viele Zeilen/Spalten es gibt. Durchlaufen lassen schreiben. Fertig. Ich würde das dann so machen:
Delphi-Quellcode:
Das waret schon mit schreiben. Lesen funktioniert ähnlich.
var
i, j: integer; tf: TextFile; begin AssignFile(tf, 'C:\EineDatei.grd'); ReWrite(tf); writeln(IntToStr(StringGrid1.colCount)); writeln(IntToStr(StringGrid1.rowCount)); for i:=0 to StringGrid1.colCount do begin for j:=0 to StringGrid1.rowCount do begin writeln(StringGrid1.Cells[i,j]); end; end; CloseFile(tf); end; Allerdings frage ich mich, was Herr unbekannt da gemacht, dass er soviel Source hat. Weil eigentlich braucht man "ColHeight" da nicht wirklich (ist, denke ich mal, in euren Programmen immer eindeutig). Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 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