Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stringgrid speichern als textdatei? (https://www.delphipraxis.net/108785-stringgrid-speichern-als-textdatei.html)

simon19881 19. Feb 2008 15:35


Stringgrid speichern als textdatei?
 
Hallo leute,
ich möchte ein Stringgrid als textdatei (.txt) speichern und laden können.
Bin noch neu also haltet es bitte einfach ^^ Bitte komplette lösungswege ganz gerade heraus ^^
Bei der Listbox ging das mit SaveToFile und LoadFromFile wie gehts hier?
MfG Simon19881

Hansa 19. Feb 2008 15:40

Re: Stringgrid speichern als textdatei?
 
hier dürfte was passendes zu finden sein :

http://www.swissdelphicenter.ch/de/t...ent=Stringgrid

simon19881 19. Feb 2008 16:13

Re: Stringgrid speichern als textdatei?
 
Kannst du mir mal erklären warum das so ist ?

Delphi-Quellcode:
procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
var
  f:   TextFile;
  i, k: Integer;
begin
  AssignFile(f, FileName);
  Rewrite(f);
  with StringGrid do
  begin
    // Write number of Columns/Rows
    Writeln(f, ColCount);
    Writeln(f, RowCount);
    // loop through cells
    for i := 0 to ColCount - 1 do
      for k := 0 to RowCount - 1 do
        Writeln(F, Cells[i, k]);
  end;
  CloseFile(F);
end;

// Load a TStringGrid from a file

procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
var
  f:         TextFile;
  iTmp, i, k: Integer;
  strTemp:   String;
begin
  AssignFile(f, FileName);
  Reset(f);
  with StringGrid do
  begin
    // Get number of columns
    Readln(f, iTmp);
    ColCount := iTmp;
    // Get number of rows
    Readln(f, iTmp);
    RowCount := iTmp;
    // loop through cells & fill in values
    for i := 0 to ColCount - 1 do
      for k := 0 to RowCount - 1 do
      begin
        Readln(f, strTemp);
        Cells[i, k] := strTemp;
      end;
  end;
  CloseFile(f);
end;


// Save StringGrid1 to 'c:\temp.txt':

procedure TForm1.Button1Click(Sender: TObject);
begin
  SaveStringGrid(StringGrid1, 'c:\temp.txt');
end;

// Load StringGrid1 from 'c:\temp.txt':

procedure TForm1.Button2Click(Sender: TObject);
begin
  LoadStringGrid(StringGrid1, 'c:\temp.txt');
end;

Hansa 19. Feb 2008 22:32

Re: Stringgrid speichern als textdatei?
 
:mrgreen:
Zitat:

Zitat von simon19881
Kannst du mir mal erklären warum das so ist ?

Was erklären ? Das ist so simpel. Für Nachhilfefragen bitte neu fragen. :mrgreen:

bluesbear 20. Feb 2008 05:29

Re: Stringgrid speichern als textdatei?
 
Zitat:

Zitat von simon19881
Kannst du mir mal erklären warum das so ist ?

Öhm - was soll wie sein? Da wird beim speichern jede Zelle in einer bestimmten Reihenfolge in eine eigene Zeile der Textdatei geschrieben. Und beim Lesen werden die Zellen in der selben Reihenfolge mit den Zeilen aus der Textdatei gefüllt. Schau dir die Textdatei doch einfach mal an im Editor.
War das jetzt das, was Du wissen wolltest?

marabu 20. Feb 2008 06:54

Re: Stringgrid speichern als textdatei?
 
Hallo Simon,

du hast an anderer Stelle geschrieben, dass du Informatik-Unterricht hast. Die Qualität des Unterrichtes ist zwar stark personengebunden, aber die wichtigste Botschaft jeder Programmierunterweisung sollte sein: Nie mit der Programmierung beginnen, bevor du dir über die Struktur und Bedeutung der Ein- und Ausgabedaten im Klaren bist. Kennst du schon das Prinzip EVA (Eingabe - Verarbeitung - Ausgabe)?

Du willst Daten aus einem StringGrid in einer Textdatei speichern? Dann bietet sich das CSV-Format an - jede Zeile im Gitter wird zu einer Textzeile und die einzelnen Zelleninhalte werden durch das Trennzeichen Komma voneinander getrennt. Dieses Speicherformat wird vom StringGrid direkt unterstützt, hier ein einfaches Beispiel: klick.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr.

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