Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit StringGrid speichern (https://www.delphipraxis.net/104103-probleme-mit-stringgrid-speichern.html)

marabu 29. Nov 2007 11:43

Re: Probleme mit StringGrid speichern
 
Hallo Alex,

die Zeilennummern sind ja Bestandteil deiner Beispieldaten, also werden sie auch mit ausgegeben. Wenn du das unterdrücken möchtest, dann vielleicht so:

Delphi-Quellcode:
procedure SaveGrid(sg: TStringGrid; s: TStream; so: TSaveOptions = []);
var
  iLow, iHigh, i, n: Integer;
  ss: TStringStream;
  bSaveCols, bExcludeFixed: Boolean;
  sl: TStrings;
begin
  ss := TStringStream.Create('');
  sl := TStringList.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
      begin
        sl.Assign(Cols[i]);
        n := FixedRows;
      end else
      begin
        sl.Assign(Rows[i]);
        n := FixedCols;
      end;
      if bExcludeFixed then
        while n > 0 do
        begin
          sl.Delete(0);
          Dec(n);
        end;
      ss.WriteString(sl.CommaText + sLineBreak);
      ss.Position := 0;
      s.CopyFrom(ss, ss.Size);
    end;
  end;
  sl.Free;
  ss.Free;
end;
Getippt und nicht getestet.

Freundliche Grüße

Borschti 30. Nov 2007 14:12

Re: Probleme mit StringGrid speichern
 
Sorry das ich jetzt erst Antworte war nen bissl stressig hier ;)

Werd mir das mal genauer anschaun und ausprobieren, vielen Dank.


mfg
Alex

Borschti 15. Jan 2008 08:25

Re: Probleme mit StringGrid speichern
 
Hallo,

nach langer Zeit (Urlaub, andere Sachen zu tun etc.) hab ich mir gedacht ich schau mal wieder in mein Delphi Programm und da sind mir auch schon ein paar sachen aufgefallen die ich gleich verändern konnte und ein paar sachen wo ich zZ. nicht weiter weiß.

Also mir ist aufgefallen das die Prozedur von Marabu bei mir garnichts speichert, ich denke es liegt an der Art wie ich sie aufrufe aber einen Fehler konnte ich dort nicht finden.

Hier ist der Code:

Delphi-Quellcode:
procedure TForm1.Speichern1Click(Sender: TObject);
var
  s: TStream;
  fn: TFileName;
begin
  fn := ChangeFileExt(ParamStr(0), '.txt');
  s := TFileStream.Create(fn, fmCreate);

  savedialog1.Title := 'Speichern sie ihre Tabelle in einer Textdatei.';
  savedialog1.execute;
   SaveGrid(StringGrid1, s);
  s.Free;

end;
Wäre super wenn mir jemand helfen könnte.

mfg
Alex

DeddyH 15. Jan 2008 09:07

Re: Probleme mit StringGrid speichern
 
Delphi-Quellcode:
procedure TForm1.Speichern1Click(Sender: TObject);
var
  s: TStream;
//  fn: TFileName;
begin
//  fn := ChangeFileExt(ParamStr(0), '.txt');
//  s := TFileStream.Create(fn, fmCreate);

  savedialog1.Title := 'Speichern sie ihre Tabelle in einer Textdatei.';
  if savedialog1.execute then
    begin
      s := TFileStream.Create(savedialog1.Filename, fmCreate);
      try
        SaveGrid(StringGrid1, s);
      finally
        s.Free;
      end;
    end;
end;

s-off 15. Jan 2008 09:11

Re: Probleme mit StringGrid speichern
 
Hallo,
Zitat:

Zitat von Borschti
Also mir ist aufgefallen das die Prozedur von Marabu bei mir garnichts speichert, ich denke es liegt an der Art wie ich sie aufrufe aber einen Fehler konnte ich dort nicht finden.

Es genügt nicht, wenn man Codes von anderen unbedacht übernimmt - man sollte auch verstehen, was der Code bewirkt.

Zitat:

Zitat von Borschti
Delphi-Quellcode:
procedure TForm1.Speichern1Click(Sender: TObject);
var
  s: TStream;
  fn: TFileName;
begin
  fn := ChangeFileExt(ParamStr(0), '.txt');
  s := TFileStream.Create(fn, fmCreate);

  savedialog1.Title := 'Speichern sie ihre Tabelle in einer Textdatei.';
  savedialog1.execute;
   SaveGrid(StringGrid1, s);
  s.Free;

end;

Du erzeugst einen FileStream. Diesem weist Du eine Datei zu. Schau Dir mal an, wie der Dateiname lautet!

Edit: Rechtschreibfehler.
Edit2: Gar nicht gesehen, dass ich schon wieder zu langsam war :mrgreen:

Borschti 15. Jan 2008 14:12

Re: Probleme mit StringGrid speichern
 
Danke für eure Antworten.

Werde mir deinen Ratschlag zu Herzen nehmen @s-off ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 Uhr.
Seite 2 von 2     12   

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