Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Frage zu TStringLists (https://www.delphipraxis.net/139671-frage-zu-tstringlists.html)

DMonkey 2. Sep 2009 18:48


Frage zu TStringLists
 
HI,ich habe ein problem bei einem meiner Programme und Würde mich über eine antwort freuen
Delphi-Quellcode:
procedure Hauptform1.Speichern1Click(Sender: TObject);
var Zeilen, Spalten, i, j: Integer;
    Tabelle: TStringList;
begin

savedialog.execute;
  // Stringliste erzeugen
  Tabelle := TStringList.Create;
  Zeilen := stringgrid1.colcount;
  Spalten := stringgrid1.rowcount;
  for i := 0 to Zeilen-1 do
  begin
    for j := 0 to Spalten-1 do
    begin
     Tabelle.Strings[i*Spalten+j] := StringGrid1.Cells[j,i] ;
    end;
  end;
  Tabelle.savetoFile (savedialog.filename+'.tab');
end;
er sagt mir dann immer wenn ich dan button klicke
"Listenindex überschreitet das Maximum(0)" wie kann ich das Maximum höher setzen :wall: :wall:


,Danke im Vorraus

Matze 2. Sep 2009 18:51

Re: Frage zu TStringLists
 
Hallo, herzlich Willkommen in der DP!

Wenn du eine neue TStringList erzeugst ist diese leer und kannst somit keine einzelnen Zeilen ansprechen.

Neue Einträge kannst du so hinzufügen:

Delphi-Quellcode:
Tabelle.Add(StringGrid1.Cells[j,i]);
Und vergiss nicht, die StringList wieder freizugeben:

Delphi-Quellcode:
Tabelle := TStringList.Create;
try
  // dein Code ...
finally
  FreeAndNil(Tabelle);
end;
Und nochwas: Wenn man bei deinem Speicherdialog auf "Abbrechen" klickt, dann knallt's.

So ist es richtig:
Delphi-Quellcode:
if SaveDialog.Execute then
   // Speichern
Grüße, Matze

DeddyH 2. Sep 2009 18:58

Re: Frage zu TStringLists
 
Weil ich heute mal meinen sozialen Tag habe:
Delphi-Quellcode:
procedure Hauptform1.Speichern1Click(Sender: TObject);
var Zeilen, Spalten, i, j: Integer;
    Tabelle: TStringList;
begin
  if savedialog.execute then
    begin
      // Stringliste erzeugen
      Tabelle := TStringList.Create;
      try
        Zeilen := stringgrid1.colcount;
        Spalten := stringgrid1.rowcount;
        for i := 0 to Zeilen-1 do
          begin
            for j := 0 to Spalten-1 do
              begin
                Tabelle.Add(StringGrid1.Cells[j,i]);
              end;
          end;
        Tabelle.savetoFile(savedialog.filename+'.tab');
      finally
        Tabelle.Free;
      end;
    end;
end;

DMonkey 2. Sep 2009 19:00

Re: Frage zu TStringLists
 
Danke man ,du hast mir echt geholfen :-D :-D

Matze 2. Sep 2009 19:03

Re: Frage zu TStringLists
 
Und ich erkläre es extra ausführlich. :wall:

*mit Deddy auf Kriegsfuß steh'* :mrgreen:

Andreas L. 2. Sep 2009 19:04

Re: Frage zu TStringLists
 
Nur eine kleine Anmerkung:
Delphi-Quellcode:
...
  Zeilen := stringgrid1.colcount;
  Spalten := stringgrid1.rowcount;
...
Row heißt Zeile
Column heißt Spalte

Du hast also die Variablen vertauscht

DeddyH 2. Sep 2009 19:05

Re: Frage zu TStringLists
 
Zitat:

Zuletzt bearbeitet von Matze am 02.09.2009, 19:56, insgesamt 5-mal bearbeitet.
Meinst Du, ich schau immer wieder zwischendurch nach, was Du nun schon wieder getippt hast? :tongue:

DP-Maintenance 2. Sep 2009 21:36

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Ein delphispezifisches Problem

himitsu 2. Sep 2009 22:00

Re: Frage zu TStringLists
 
Zitat:

savedialog.filename+'.tab'
warum läßt du das '.tab' nicht im SaveDialog mit angeben?

( .DefaultExt = 'tab' und schon wird dieses automatisch angehängt, wenn keine Extention angegeben wurde und .Filter nicht vergessen )


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 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