Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Leere Zeilen beim Einlesen überspringen (https://www.delphipraxis.net/185413-leere-zeilen-beim-einlesen-ueberspringen.html)

JulianT 8. Jun 2015 08:15

Delphi-Version: XE4

Leere Zeilen beim Einlesen überspringen
 
Hallo, wenn ich aus einer Datei etwas in eine ListBox einlesen will, klappt das soweit ganz gut, nur würde ich z.B. gerne die ganzen leeren Zeilen weg lassen, sodass diese nicht mit übernommen werden. Bin leider etwas ansatzlos.

Hier der Quellcode dafür.
Delphi-Quellcode:
procedure TForm1.ButtonEinlesenClick(Sender: TObject);
var Anzahl : Integer;
Zeile : String;
TextDatei : TextFile;
begin
  ListBox1.Items.Clear;
  Anzahl:=0;
  AssignFile(TextDatei,'Hier steht mein Pfad');
  Reset(TextDatei);
  repeat
      ReadLn(TextDatei,Zeile);
      Inc(Anzahl);
      ListBox1.Items.Add(AnsiUpperCase(Zeile));
  until EOF(TextDatei);
    CloseFile(TextDatei);
    AnzahlEdit.Text:=IntToStr(Anzahl);
end;
Kann mir jemand vlt helfen und sagen, wie das geht? :=

Julian

Klaus01 8. Jun 2015 08:25

AW: Leere Zeilen beim Einlesen überspringen
 
Guten Morgen,

vor dem Hinzufügen in die Listbox prüfen ob die Zeile etwas enthält.

Delphi-Quellcode:
if length(zeile) > 0 then
 ...
Grüße
Klaus

himitsu 8. Jun 2015 09:20

AW: Leere Zeilen beim Einlesen überspringen
 
Zum Glück ist der Compiler meistens intelligent genug, so daß er
Delphi-Quellcode:
if length(zeile) > 0 then
oftmals gegen ein einfaches
Delphi-Quellcode:
if Zeile <> '' then
ersetzt.

Aber so oder so, wenn man das prüft, was auch in der Fragestellung drin steht, dann hat man natürlich die Lösung. :roll:

Popov 8. Jun 2015 09:29

AW: Leere Zeilen beim Einlesen überspringen
 
Delphi-Quellcode:
  repeat
      ReadLn(TextDatei,Zeile);
      Inc(Anzahl);
      if Trim(Zeile) <> '' then
        ListBox1.Items.Add(AnsiUpperCase(Zeile));
  until EOF(TextDatei);
Evtl. noch Trim einsetzen, wenn für dich Leer eine Zeile ohne Inhalt, aber evtl. mit Leerzeichen bedeutet.

//EDIT:

Mal so ein Tipp: Items von TListBox ist eine TStrings Klasse, d. h. du kannst den Inhalt auch laden mit:
Delphi-Quellcode:
ListBox1.Items.LoadFromFile(TextDatei);
Und wegen der Leerzeilen:
Delphi-Quellcode:
  ListBox1.Items.LoadFromFile(TextDatei);
  for i := ListBox1.Items.Count - 1 downto 0
    if Trim(ListBox1.Items[i]) = '' then
      ListBox1.Items.Delete(i);

himitsu 8. Jun 2015 09:48

AW: Leere Zeilen beim Einlesen überspringen
 
Delphi-Quellcode:
if Trim(Zeile) <> '' then
  ListBox1.Items.Add(...);
Wirklich nicht so?

Warum eigentlich Repeat-Until und nicht While-Do?
Ist die Datei leer, dann gibt es keine Zeile, die man auslesen kann, also vorher prüfen.

Popov 8. Jun 2015 10:05

AW: Leere Zeilen beim Einlesen überspringen
 
Zitat:

Zitat von himitsu (Beitrag 1304489)
Wirklich nicht so?

Jep. Nicht drauf geachtet.


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