Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stringgrid einlesen (https://www.delphipraxis.net/130867-stringgrid-einlesen.html)

ichnixwissen 14. Mär 2009 17:58


Stringgrid einlesen
 
Es sind 4 Stringgrids auf einer Form und in den stringgrids sollen daten aus verschiedenen Dateien geladen werden. Aber es wird nichts in den stringgrids angezeigt. :!:

Delphi-Quellcode:
type Teintrag = record  // die datentypen date und woerter werden in dem record Teintrag deklariert
  zahl: string[20];
  zeit: string[20];
  datum: string[20];
  date: string[20];
  woerter: string[20];
    zahl2: string[20];
  zeit2: string[20];
  datum2: string[20];
    zahl3: string[20];
  zeit3: string[20];
  datum3: string[20];
     end;

var
  Form19: TForm19;
  datei: file of Teintrag;  // Datei ist die Datei von Teintrag
eintrag: Teintrag;

implementation

{$R *.dfm}

procedure TForm19.FormCreate(Sender: TObject);
begin
if FileExists(z +'.kt5') then begin
AssignFile(datei,z +'.kt5');  // wird diese Datei geöffnet
 Reset(datei);
 while not eof(datei) do   //solange die Datei nicht zu Ende ist...
      begin
    Read(datei,eintrag);  // und die Datei gelesen
    with eintrag do
      begin           // die Datei wird zurück gesetzt
      stringGrid1.Cells[0,1]:= datum;
        stringGrid1.Cells[1,1]:=zahl;
      StringGrid1.Cells[2,1]:=zeit;
      end;
     closeFile(datei);        // die Datei wird geschlossen
      end;

if FileExists(z +'.kt6') then begin
AssignFile(datei,z +'.kt6');  // wird diese Datei geöffnet
 Reset(datei);               // die Datei wird zurück gesetzt
  while not eof(datei) do   //solange die Datei nicht zu Ende ist...
      begin
    Read(datei,eintrag);  // und die Datei gelesen
    with eintrag do
      begin
      stringGrid2.Cells[0,1]:= date;
        stringGrid2.Cells[1,1]:=woerter;
      end;
      end; closeFile(datei);        // die Datei wird geschlossen
      end;

if FileExists(z +'.kt7') then begin
AssignFile(datei,z +'.kt7');  // wird diese Datei geöffnet
 Reset(datei);               // die Datei wird zurück gesetzt
  while not eof(datei) do   //solange die Datei nicht zu Ende ist...
      begin
    Read(datei,eintrag);  // und die Datei gelesen
    with eintrag do
      begin
      stringGrid3.Cells[0,1]:= datum2;
        stringGrid3.Cells[1,1]:=zahl2;
        StringGrid3.Cells[2,1]:=zeit2;
      end;
      end; closeFile(datei);        // die Datei wird geschlossen
      end;

 if FileExists(z +'.kt8') then begin
 AssignFile(datei,z +'.kt8');  // wird diese Datei geöffnet
 Reset(datei);               // die Datei wird zurück gesetzt
  while not eof(datei) do   //solange die Datei nicht zu Ende ist...
      begin
    Read(datei,eintrag);  // und die Datei gelesen
    with eintrag do
      begin
      stringGrid4.Cells[0,1]:= datum;
        stringGrid4.Cells[1,1]:=zahl;
        StringGrid4.Cells[2,1]:=zeit;
      end;
      end; closeFile(datei);        // die Datei wird geschlossen
      end;
end;

end.

Keldorn 14. Mär 2009 18:12

Re: Stringgrid einlesen
 
Hallo,

deine Formatierung ist grauenvoll ;-)
Zitat:

stringGrid1.Cells[0,1]:= datum;
Du liest die Dateien mit while alle Einträge aus, schreibst aber immer in die gleiche Zelle.

Gruß Frank

ichnixwissen 14. Mär 2009 18:54

Re: Stringgrid einlesen
 
Das ist richtig so, da in den dateien immer nur die erste zeile gespeichert ist.

Klaus01 14. Mär 2009 19:01

Re: Stringgrid einlesen
 
Guten Abend,

in der Variable z steht da ein absoluter oder ein relativer Pfad?

Grüße
Klaus

ichnixwissen 14. Mär 2009 19:03

Re: Stringgrid einlesen
 
z ist bei allen gleich, z.B. z = Hans

craash 14. Mär 2009 19:09

Re: Stringgrid einlesen
 
also lädst du aus "Hans.kt8" (zB) ? ohne jeglichen dateipfad?

dann ist ja logisch dass nichts angezeigt wird, da alles folgende nach
Delphi-Quellcode:
if fileexists()
nicht zur ausführung kommt.

ichnixwissen 14. Mär 2009 19:10

Re: Stringgrid einlesen
 
Wie krieg ich das Problem gelöst?

Keldorn 14. Mär 2009 19:10

Re: Stringgrid einlesen
 
also du solltest immer absolute Pfade verwenden, wenn z nur Hans ist, kannst du verzeichnismäßig irgendwo landen.

hast mal ein paar breakpoints gesetzt?
bzw
Delphi-Quellcode:
if FileExists(z +'.kt5') then
  begin
  end
 else
  showmessage('Datei xyz nicht gefunden'
Du gibst ja gar keine Fehlermeldung aus, wenn die Datei nicht gefunden wurde

Zitat:

//solange die Datei nicht zu Ende ist...
Zitat:

Das ist richtig so, da in den dateien immer nur die erste zeile gespeichert ist.
dann laß das lieber mit den Kommentaren ;-), hier verwirrt er ja wirklich, wenn du schreibst solange ...

edit:
Zitat:

Wie krieg ich das Problem gelöst?
in dem du den Pfad davor schreibst, wo liegen denn die Dateien?

Klaus01 14. Mär 2009 19:11

Re: Stringgrid einlesen
 
Wo liegt Hans, unterhalb des verzeichnisses von dem die exe gestartet wird?

Dann mach das lieber dieses raus:

Delphi-Quellcode:
z:=ExtractFilePath(ParamStr(0))+'Hans';
Denn es ist nicht immer sichergestellt das Hans (relativer Pfad) auch gefunden wird.

Grüße
Klaus

omata 14. Mär 2009 19:11

Re: Stringgrid einlesen
 
Wenn du dir mal die Mühe gemacht hättest, deinen Quellcode ordentlich einzurücken, dann wäre dir auch aufgefallen, das das erste closefile innerhalb deiner Einleseschleife steht.

Delphi-Quellcode:
type
  Teintrag = record  // die datentypen date und woerter werden in dem record Teintrag deklariert
    zahl:   string[20];
    zeit:   string[20];
    datum:  string[20];
    date:   string[20];
    woerter: string[20];
    zahl2:  string[20];
    zeit2:  string[20];
    datum2: string[20];
    zahl3:  string[20];
    zeit3:  string[20];
    datum3: string[20];
  end;

var
  Form19: TForm19;

implementation

{$R *.dfm}

var
  datei: file of Teintrag;  // Datei ist die Datei von Teintrag
  eintrag: Teintrag;

procedure TForm19.FormCreate(Sender: TObject);
begin
  if FileExists(z + '.kt5') then begin
    AssignFile(datei, z + '.kt5'); // wird diese Datei geöffnet
    try
      Reset(datei);
      while not eof(datei) do //solange die Datei nicht zu Ende ist...
      begin
        Read(datei, eintrag); // und die Datei gelesen
        with eintrag do
        begin // die Datei wird zurück gesetzt
          stringGrid1.Cells[0,1]:=datum;
          stringGrid1.Cells[1,1]:=zahl;
          StringGrid1.Cells[2,1]:=zeit;
        end;
      end;
    finally
      closeFile(datei); // die Datei wird geschlossen
    end;
  end;

  if FileExists(z + '.kt6') then begin
    AssignFile(datei, z + '.kt6'); // wird diese Datei geöffnet
    try
      Reset(datei); // die Datei wird zurück gesetzt
      while not eof(datei) do //solange die Datei nicht zu Ende ist...
      begin
        Read(datei, eintrag); // und die Datei gelesen
        with eintrag do
        begin
          stringGrid2.Cells[0,1]:=date;
          stringGrid2.Cells[1,1]:=woerter;
        end;
      end;
    finally
      closeFile(datei); // die Datei wird geschlossen
    end;
  end;

  if FileExists(z + '.kt7') then begin
    AssignFile(datei, z + '.kt7'); // wird diese Datei geöffnet
    try
      Reset(datei); // die Datei wird zurück gesetzt
      while not eof(datei) do //solange die Datei nicht zu Ende ist...
      begin
        Read(datei,eintrag); // und die Datei gelesen
        with eintrag do
        begin
          stringGrid3.Cells[0,1]:=datum2;
          stringGrid3.Cells[1,1]:=zahl2;
          stringGrid3.Cells[2,1]:=zeit2;
        end;
      end;
    finally
      closeFile(datei); // die Datei wird geschlossen
    end;
  end;

  if FileExists(z + '.kt8') then begin
    AssignFile(datei, z + '.kt8'); // wird diese Datei geöffnet
    try
      Reset(datei); // die Datei wird zurück gesetzt
      while not eof(datei) do //solange die Datei nicht zu Ende ist...
      begin
        Read(datei, eintrag); // und die Datei gelesen
        with eintrag do
        begin
          stringGrid4.Cells[0,1]:=datum;
          stringGrid4.Cells[1,1]:=zahl;
          stringGrid4.Cells[2,1]:=zeit;
        end;
      end;
    finally
      closeFile(datei); // die Datei wird geschlossen
    end;
  end;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 Uhr.
Seite 1 von 2  1 2      

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