Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unnötige Zeilenumbrücke löschen? (https://www.delphipraxis.net/102538-unnoetige-zeilenumbruecke-loeschen.html)

mo_greene 30. Okt 2007 17:02


Unnötige Zeilenumbrücke löschen?
 
Hallo,

ich benutze ein Memo Feld, welchem nach Ausführen des Programms immer ein Zeilenumbruch angefügt wird, d.h. es entsteht immer eine leere unnötige Zeile.

Wie kann ich diese entfernen?

liebste grüße & danke :)

DeddyH 30. Okt 2007 17:03

Re: Unnötige Zeilenumbrücke löschen?
 
Delphi-Quellcode:
if Memo.Lines.Count > 0 then
  Memo.Lines.Delete(Pred(Memo.Lines.Count));

Namenloser 30. Okt 2007 17:07

Re: Unnötige Zeilenumbrücke löschen?
 
Vielleicht sollte man trotzdem zur Sicherheit noch prüfen, ob die Zeile wirklich leer ist.
Delphi-Quellcode:
if Memo.Lines.Count > 0 then
  if Memo.Lines.Last='' then
    Memo.Lines.Delete(Pred(Memo.Lines.Count));

SirThornberry 30. Okt 2007 17:15

Re: Unnötige Zeilenumbrücke löschen?
 
wäre es nicht sinnvoller die Zeile nur einzufügen wenn die vorherige nicht auch schon eine Leerzeile ist?

mo_greene 30. Okt 2007 18:36

Re: Unnötige Zeilenumbrücke löschen?
 
Delphi-Quellcode:
repeat
  if GeheimtextMmo.Lines.Count > 1 then
    if GeheimtextMmo.Lines.Strings[GeheimtextMmo.Lines.Count] = '' then
      GeheimtextMmo.Lines.Delete(Pred(GeheimtextMmo.Lines.Count))
  else
    break;
until GeheimtextMmo.Lines.Strings[GeheimtextMmo.Lines.Count] [b]<> ''[/b];
Irgendwie merkt er nicht, dass er bei <> '' die Schleife beenden soll...woran liegt das? Die repeat...until-Schleife läuft unendlich weiter, dabei soll er aufhören, wenn die Zeile wieder etwas enthält.

DeddyH 30. Okt 2007 18:42

Re: Unnötige Zeilenumbrücke löschen?
 
Delphi-Quellcode:
while Length(GeheimtextMmo.Lines[GeheimtextMmo.Lines.Count - 1]) = 0 do
  GeheimtextMmo.Lines.Delete(GeheimtextMmo.Lines.Count - 1);
Ungetestet, aber ich finde hier eine Kopfschleife angebrachter.

P.S.: Die letzte Zeile hat den Index Lines.Count - 1

Apollonius 30. Okt 2007 18:42

Re: Unnötige Zeilenumbrücke löschen?
 
Die meisten Arrays, und alle Listen, werden in Delphi mit Null-basierten Indices angesprochen. Das heißt, dass das erste Element den Index 0 hat, und folglich das letzte Element den Index Count-1. Eigentlich sollte in deinem Code eine Exception "Listenindex überschreitet das Maximum" kommen.

Blackheart 30. Okt 2007 18:43

Re: Unnötige Zeilenumbrücke löschen?
 
Was ist mit Trim...

monta 30. Okt 2007 18:44

Re: Unnötige Zeilenumbrücke löschen?
 
wenn es wirklich nur die letzte Zeile ist, wieso nicht einfach ein Trim(Memo.Text) und gut ist.

mo_greene 30. Okt 2007 18:53

Re: Unnötige Zeilenumbrücke löschen?
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
while Length(GeheimtextMmo.Lines[GeheimtextMmo.Lines.Count - 1]) = 0 do
  GeheimtextMmo.Lines.Delete(GeheimtextMmo.Lines.Count - 1);
Ungetestet, aber ich finde hier eine Kopfschleife angebrachter.

P.S.: Die letzte Zeile hat den Index Lines.Count - 1


wird bei 'length' ein Leerzeichen nicht auch mitberechnet?


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