Autor Beitrag
Jenns
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Fr 21.10.05 12:51 
Hallo,

da ich leider in einem Memofeld unten einige Leerzeilen habe und die beim Drucken loswerden möchte,
versuche ich durch eine Routine die Leerzeilen am Ende zu löschen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var fertig : boolean;
    i:integer;

begin
  i:=Memo1.Lines.Count-1;
  Fertig := false;
  while (i >= 0and (fertig = false) do
    Begin
      If trim(Memo1.Lines[i])='' then
        Memo1.Lines.delete(i)
      else
        fertig := true;
      i:= i-1;
    end;
end;


leider löscht er mir aber die Letzte Zeile nicht.
aus
ausblenden Quelltext
1:
2:
Zeile 1
Zeile 2

wird
ausblenden Quelltext
1:
2:
Zeile 1
Zeile 2


Die dritte Zeile ist zwar leer aber immer noch da.
Mit delete kann ich die Zeile per Hand löschen.

Ich bin für jede Hilfe dankbar.

Gruß, Jenns
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Di 25.10.05 16:49 
Komisches Problem, die Memo hat zwar nur x Zeilen, zwei Zeichen (Die für den zeilenumbruch) werden aber schon für die nächste zeile gewertet, welche aber nicht existiert (und daher nicht gelöscht wird). Estwas seltsame Lösung, funktioniert aber: letzte beide Zeichen löschen (s.u.). Vielleicht gibt es noch ne bessere Lösung.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
var fertig : boolean;
    i:integer;

begin
  i:=Memo1.Lines.Count-1;
  Fertig := false;
  while (i >= 0and (fertig = false) do
    Begin
      If trim(Memo1.Lines[i])='' then
        Memo1.Lines.delete(i)
      else
        fertig := true;
      i:= i-1;
    end;

  memo1.Text := copy(memo1.Text,0,length(memo1.Text)-2);

end;
Jenns Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Fr 28.10.05 10:50 
Danke,

genau sowas habe ich gesucht.

Hab jetzt noch vorne ein Memo1.lines.Add('') eingefügt, damit er nicht die letzten 2 Zeichen löscht, wenn es keine letzte Zeile gibt.

Der Quelltext sieht deshalb jetzt so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var fertig : boolean;
    i:integer;

begin
  Memo1.lines.Add('');
  i:=Memo1.Lines.Count-1;
  Fertig := false;
  while (i >= 0and (fertig = false) do
    Begin
      If trim(Memo1.Lines[i])='' then
        Begin
          if i > 0 then
            Memo1.Lines[i] := Trim(Memo1.Lines[i]);
          Memo1.Lines.delete(i);
        end
      else
        fertig := true;
      i:= i-1;
    end;
  memo1.Text := copy(memo1.Text,0,length(memo1.Text)-2);
end;


Vielen Dank, Jenns
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 28.10.05 11:01 
Oder einfach
ausblenden Delphi-Quelltext
1:
Memo1.Text := Trim(Memo1.Text);					

Das löscht alle Leerzeichen und leeren Zeilen am Anfang und am Ende...