![]() |
stringgrid als Textdatei speichern
Noch kappt die Speicherung nur über ein memo-feld; es muss allerdings eine direkte Möglichkeit geben.
Bei mir sieht es wie folgt aus:
Delphi-Quellcode:
Ich möchte gerne, dass der Speicherprt frei gewählt werden kann
procedure tform13.SpeedButton2Click(Sender: TObject);
var i:integer; s:string; begin altfilename:=extractfilepath(application.ExeName); //altes dir funktioniert savedialog1.execute; memo1.lines.clear; with stringgrid1 do begin for i := 0 to rowcount-1 do begin s := Format('%-20s %-16s %-10s %-10s', [Cells[0,i], Cells[1,i], Cells[2,i], Cells[3,i]]); memo1.lines.Add(s); end; end; memo1.lines.SaveToFile(savedialog1.Filename +'.txt'); savedialog1.Free; chdir(altfilename);//wieder zurück; end; |
AW: stringgrid als Textdatei speichern
Was ist Memo.Lines für ein Typ?
Und nun schau mal was ganz unten bei ![]() Aber warum gibs du den SaveDialog frei? Du hast ihn schließlich auch nicht selber erstellt. Tipp: Versuche mal mehrmals hintereinander zu speichern. (mehrmals auf deinen SpeedButton drücken) Und ChDir stimmt wohl auch nicht, denn was will ChDir haben? Genau, ein Verzeichnis und keine Datei. Tipp: Kennst du die Code-Tags? [DELPHI]...[/DELPHI] |
AW: stringgrid als Textdatei speichern
Wie wäre es statt des TMemo eine TStringlist zu benutzen?
Und irgendwie steige ich durch die Verwendung des SaveDialog nicht durch. Gruß K-H |
AW: stringgrid als Textdatei speichern
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
Load und Save im Anhang
If SaveDialog.Execute then SaveStringGrid(StringGrid1,SaveDialog.FileName);
|
AW: stringgrid als Textdatei speichern
Die Daten sind ja in einer stringgrid angezeigt; diese Daten will ich abspeichern,.
Das savedialoge execute ist nur dazu da, einen frei wählbaren Namen uind ein frei wählbares directory zu wählen. mit dem Hinweis "TStrings in der OH steht"kann ich wenig anfangen |
AW: stringgrid als Textdatei speichern
Da liegt aber einiges im Argen mit deinem Save-Dialog:
Delphi-Quellcode:
Und kein Free!
if SaveDialog1.execute then
begin end; |
AW: stringgrid als Textdatei speichern
Hallo,
es könnte auch so gehen:
Delphi-Quellcode:
Grüße
procedure TForm1.Button1Click(Sender: TObject);
var i : Word; fileStream : TFileStream; begin if saveDialog1.execute then begin fileStream := TFileStream.Create(saveDialog1.FileName,fmCreate); try for i:=0 to stringGrid1.RowCount -1 do begin stringGrid1.Rows[i].SaveToStream(fileStream); end; finally fileStream.Free; end; end; end; Klaus |
AW: stringgrid als Textdatei speichern
@Klaus01
wie lädst Du das ganze wieder ? |
AW: stringgrid als Textdatei speichern
Wer hat was von Laden gesagt?
Dort oben steht nur speichern. :stupid: In Bezug auf Textdatei kann man auch JSON, XML, CSV und Co. erwähnen. |
AW: stringgrid als Textdatei speichern
|
AW: stringgrid als Textdatei speichern
so
![]() |
AW: stringgrid als Textdatei speichern
Zitat:
(falls dieser nicht schon #10#13 ist?) Grüße Klaus |
AW: stringgrid als Textdatei speichern
Für einen Stream würde ich etwas Struktur mit einbauen.
IntZeilen,IntSpalten ab dann immer IntAnzZeichen,String IntAnzZeichen,String ..... damit wären dann die, immerhin möglichen, Daten wie
Delphi-Quellcode:
auch speicherbar/ladbar, ist bei meinem Beispiel in #4 auch nicht berücksichtigt.
StringGrid1.Cells[1,1] := 'was'#13#10'noch';
|
AW: stringgrid als Textdatei speichern
Delphi-Quellcode:
Ich denke so sollte es funktionieren.
var i:integer;
s:string; sl : tStringlist; begin if SaveDialog1.execute then begin sl:=tstringlist.create; with stringgrid1 do begin for i := 0 to rowcount-1 do begin s := Format('%-20s %-16s %-10s %-10s', [Cells[0,i], Cells[1,i], Cells[2,i], Cells[3,i]]); sl.add(s); end; end; sl.SaveToFile(SaveDialog1.Filename ); sl.free; end; end; Gruß K-H |
AW: stringgrid als Textdatei speichern
Oder so:
Delphi-Quellcode:
procedure SaveStringGridToFile(sg: TStringGrid; const Filename: TFilename;
aDelimiter: char = #255); var aRow: integer; Total, Line: TStringlist; begin Assert(Assigned(sg)); Total := TStringlist.Create; try Line := TStringlist.Create; try for aRow := 0 to sg.RowCount - 1 do begin Line.Assign(sg.Rows[aRow]); Line.Delimiter := aDelimiter; Line.StrictDelimiter := true; Total.Add(Line.DelimitedText); end; Total.SaveToFile(Filename); finally Line.Free; end; finally Total.Free; end; end; procedure LoadStringGridFromFile(sg: TStringGrid; const Filename: TFilename; aDelimiter: char = #255); var aRow: integer; Total, Line: TStringlist; begin Assert(Assigned(sg)); Total := TStringlist.Create; try Total.LoadFromFile(Filename); sg.RowCount := Total.Count; Line := TStringlist.Create; try for aRow := 0 to Total.Count - 1 do begin Line.Delimiter := aDelimiter; Line.StrictDelimiter := true; Line.DelimitedText := Total[aRow]; sg.Rows[aRow].Assign(Line); end; finally Line.Free; end; finally Total.Free; end; end; |
AW: stringgrid als Textdatei speichern
[OT]
das wird langsam zum running gag [/OT] |
AW: stringgrid als Textdatei speichern
Und langsam müssten wir alle Möglichkeiten hier zusammen haben, die es sowieso schon überall im Internet zu finden gibt. ;)
|
AW: stringgrid als Textdatei speichern
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 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-2025 by Thomas Breitkreuz