![]() |
StringGrid Inhalt Speichern?
Hallo,
ich habe ein Problem mit meinem SaveDialog und zwar bin ich soweit das ich zwar aus meinem StringGrid in eine Textdatei etwas schreiben kann aber durch meine for-Schleife wird immer nur die Letzte Zeile meines StringGrids in die Datei gespeichert, was auch eigentlich Logisch ist. Nun will ich aber das jede Zeile meines StringGrids gleichzeitig in meine Datei gespeichert wird. Hier mal der Code-Ausschnitt:
Delphi-Quellcode:
Kennt da vielleicht jemand eine Lösung?
procedure TForm1.Speichern1Click(Sender: TObject);
var i: Integer; begin if SaveDialog1.Execute then try for i := 1 to 10 do begin StringGrid1.Rows[i].SaveToFile(SaveDialog1.Filename); end; except ShowMessage ('Fehler beim Speichern der Datei!'); end; Auserdem werden die einzelnen Zeileninhalte untereinander in der Textdatei gespeichert, ich will aber das sie wie im Folgenden Beispiel gespeichert werden damit ich gespeicherte Datei auch wieder in mein StringGrid laden kann. Hier mal das angekündigte Beispiel: 1;52323;Müller;Hans;Kühle Bäume 12;13186;Jesberg; 2;52266;Lang;Susanne;Am Rödel 21;52131;Hundshausen; ... Bin für jede hilfreiche Antwort dankbar mfg Alex |
Re: StringGrid Inhalt Speichern?
|
Re: StringGrid Inhalt Speichern?
Daanke für den Link werde mirs mal genauer anschaun und mich gegebenenfalls nochmal melden ;)
|
Re: StringGrid Inhalt Speichern?
Also das klappt jetzt fast alles so wie es soll, das ist schonmal gut ;)
Allerdings habe ich noch 2 Probleme, und zwar wird ja als Trennzeichen in der abgespeicherten Textdatei, durch .CommaText, ein Komma verwendet, ich brauch aber ein Semikolon als Trennzeichen damit ich die Datei dann auch wieder in mein StringGrid einlesen kann gibts da ein Befehl in der Art wie .CommaText? Meine zweite Frage ist wie ich die erste Zeile bzw. die FixedRows vom Speichern ausschliesen kann? mfg Alex |
Re: StringGrid Inhalt Speichern?
Zitat:
Zitat:
|
Re: StringGrid Inhalt Speichern?
Naja schade eigentlich muss ich wohl ein Paar Sachen umstellen :(
Ich habe die Prozedur von Marabu mal getestet, allerdings werden mir bei
Delphi-Quellcode:
einige Fehler angezeigt, von wegen "X erwartet aber Y gefunden", ich habe mal das eingesetzt wonach er gefragt hat aber bin nicht wirklich weitergekommen...weiß jemand wie man das beheben kann?
type
TSaveOption = (soSaveCols, soExcludeFixed); TSaveOptions = set of TSaveOption; |
Re: StringGrid Inhalt Speichern?
Da der Thread ja nun leider etwas nach unten gerutscht ist werd ich ihn wohl Pushen müssen :|
Also nochmal meine Frage, weiß jemand wie sich das Problem beheben lässt? Delphi Version ist Delphi 7 Professional. mfg Alex |
Re: StringGrid Inhalt Speichern?
Zeig doch mal den fehlerhaften Code und am Besten den Teil davor und den Teil dahinter gleich mit.
|
Re: StringGrid Inhalt Speichern?
Hier ist nochmal der Code Abschnitt
Delphi-Quellcode:
Fehlermeldung lautet: ':' erwartet, aber '=' gefunden. Hab schon ausprobiert es mit den "Anweisungen" der Fehlermeldungen zu lösen aber irgendwann wirds einfach nurnoch schräg. Auserdem Merkwürdig ist das mir die Meldungen die sich auf den Teil beziehen mir in Fenstern ausgegeben werden, die anderen aber nicht :/
type
Bearbetien1: TMenuItem; Speichern1: TMenuItem; SaveDialog1: TSaveDialog; N3: TMenuItem; TSaveOption = (soSaveCols, soExcludeFixed); // Hier der Fehler TSaveOptions = set of TSaveOption; procedure ffnen1Click(Sender: TObject); procedure Druckereinstellungen1Click(Sender: TObject); procedure Drucken1Click(Sender: TObject); Und hier nochmal der gesamte Ausschnitt mit dem es zusammenhängt.
Delphi-Quellcode:
type
TSaveOption = (soSaveCols, soExcludeFixed); TSaveOptions = set of TSaveOption; procedure SaveGrid(sg: TStringGrid; s: TStream; so: TSaveOptions = []); var iLow, iHigh, i: Integer; ss: TStringStream; bSaveCols, bExcludeFixed: Boolean; begin ss := TStringStream.Create(''); with sg do begin bSaveCols := soSaveCols in so; bExcludeFixed := soExcludeFixed in so; if bSaveCols then begin iLow := IfThen(bExcludeFixed, FixedCols); iHigh := Pred(ColCount); end else begin iLow := IfThen(bExcludeFixed, FixedRows); iHigh := Pred(RowCount); end; for i := iLow to iHigh do begin ss.Size := 0; if bSaveCols then ss.WriteString(Cols[i].CommaText + sLineBreak) else ss.WriteString(Rows[i].CommaText + sLineBreak); ss.Position := 0; s.CopyFrom(ss, ss.Size); end; end; ss.Free; end; mfg Alex |
Re: StringGrid Inhalt Speichern?
Irgendwie fehlt mir da etwas.
Delphi-Quellcode:
type
TSaveOption = (soSaveCols, soExcludeFixed); TSaveOptions = set of TSaveOption; TFormMain = class(TForm) //wo ist das geblieben? Bearbetien1: TMenuItem; Speichern1: TMenuItem; SaveDialog1: TSaveDialog; N3: TMenuItem; procedure ffnen1Click(Sender: TObject); procedure Druckereinstellungen1Click(Sender: TObject); procedure Drucken1Click(Sender: TObject); |
Re: StringGrid Inhalt Speichern?
Ah ja super, hab
Delphi-Quellcode:
drin aber nur vergessen es in den post zu kopieren und wusste nicht das
TFormMain = class(TForm)
Delphi-Quellcode:
davor muss, Danke sehr ;)
TSaveOption = (soSaveCols, soExcludeFixed);
TSaveOptions = set of TSaveOption; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 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