AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeilen in Memo löschen

Ein Thema von Opa Knack · begonnen am 14. Feb 2005 · letzter Beitrag vom 14. Feb 2005
Antwort Antwort
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#1

Zeilen in Memo löschen

  Alt 14. Feb 2005, 08:32
Hallo,

manchmal ist man einfach zu vernagelt:

Ich möchte ein Memo nach Leerzeilen durchsuchen und diese löschen. Zusätzlich können die zu löschenden Zeilen aber auch (nach x Leerschritten) noch Text beinhalten.

Ergo soll jede Zeile entweder direkt gelöscht werden, wenn ein darin nur ein Zeilenumbruch enthalten ist, oder sie soll gelöscht werden, wenn mehr als 5 Leerzeichen am Anfang stehen.

Irgendwie habe ich am Wochenende zuviel in PHP herumgespielt, ich komme einfach nicht dahinter

Könnte mir mal jemand unter die Arme greifen?

Danke
Opa
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Zeilen in Memo löschen

  Alt 14. Feb 2005, 08:34
kleiner tipp: such hier einfach mal (heißer tipp : unter pos(fürs zeichen finden) oder delete(löschen eines gewissentextbereiches))


mfg
Nico
Nico Müller
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Zeilen in Memo löschen

  Alt 14. Feb 2005, 08:36
das habe ich mal fürs zeilen löschen gefunden

von Daniel_B <-- vermisse daniel übrigens noch immer
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Zeilen in Memo löschen

  Alt 14. Feb 2005, 08:42
Ich habe gedacht, das schreib ich schnell, aber Pustekuchen, kann mir einer sagen, wieso das nicht geht?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
    LineCount: integer;
begin
  LineCount := Memo1.Lines.Count;

  for i := 0 to LineCount - 1 do
  begin
    if (Memo1.Lines[i] = '') or
       (Pos(' ', Memo1.Lines[i]) = 1) then
       begin
         Memo1.Lines.Delete(i);
         dec(LineCount);
       end;
  end;
end;
dec(LineCount); Wird nicht ausgeführt (es befindet sich kein blauer Punkt beim Kompilieren vor der Zeile).

Gehört zwar nicht direkt zum Thema, würde mich aber schon interessieren.
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#5

Re: Zeilen in Memo löschen

  Alt 14. Feb 2005, 08:46
Hallo,
Machs doch so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
  for i := Memo1.Lines.Count - 1 downto 0 do begin
    if (Memo1.Lines[i] = '') or (Pos(' ', Memo1.Lines[i]) = 1) then begin
         Memo1.Lines.Delete(i);
    end;
  end;
end;
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Zeilen in Memo löschen

  Alt 14. Feb 2005, 08:56
@Matze:

Es ist immer ein Fehler in einem Array etwas löschen zu wollen wenn die Schleife von 0 bis zum ende des Arrays läuft.
Wenn in deinem Memo 10 Zeilen stehen läuft deine Schleife von 0 bis 9. Wenn Du nun die Zeile 5 (index 4) löschst sind in deinem Memo nur noch 9 Zeilen (0 bis 8); deine Schleife würde aber noch immer bis 9 laufen. Und da knallt es dann.

Dein Fehler kommt daher das Du in einer FOR-Do Schleife die Zählervariable nicht verändern darfst/kannst.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Zeilen in Memo löschen

  Alt 14. Feb 2005, 09:03
Danke Sharky, aber wieso knallt es bzw. wieso kann ich LineCount nicht herunterzählen? Das wollte ich ja extra deshalb machen. Und knallen tut es gar nicht, ich muss den Button nur 2x klickn, bis das erwünschte Ergebnis eintritt.

Edit: Habe deinen letzten Satz übersehen, jetzt kappier ich's so halb ^^ danke. *blubb*
  Mit Zitat antworten Zitat
Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#8

Re: Zeilen in Memo löschen

  Alt 14. Feb 2005, 09:12
Hallo,

mach es doch so - dann spielt es auch keine Rolle, ob nach >5 Zeichen noch Text kommt.

Der ganze Text (egal wo), wird dann "gesichert":

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := Memo1.Lines.Count - 1 downto 0 do
  begin
    if Trim(Memo1.Lines[i]) = 'then
      Memo1.Lines.Delete(i);
    Memo1.Lines[i] := Trim(Memo1.Lines[i]);
  end;
end;
Macht dann aus:
================================================== =====
Dies ist


ein

**************kleiner Test.


******Alles sollte nun weg und linksbündig sein...

================================================== =====

dieses hier:
================================================== =====
Dies ist
ein
kleiner Test.
Alles sollte nun weg und linksbündig sein...
================================================== =====
Catbytes
  Mit Zitat antworten Zitat
Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Zeilen in Memo löschen

  Alt 14. Feb 2005, 10:45
Sharky sagte:
Zitat:

Es ist immer ein Fehler in einem Array etwas löschen zu wollen wenn die Schleife von 0 bis zum ende des Arrays läuft.
Wenn in deinem Memo 10 Zeilen stehen läuft deine Schleife von 0 bis 9. Wenn Du nun die Zeile 5 (index 4) löschst sind in deinem Memo nur noch 9 Zeilen (0 bis ; deine Schleife würde aber noch immer bis 9 laufen. Und da knallt es dann.

Dein Fehler kommt daher das Du in einer FOR-Do Schleife die Zählervariable nicht verändern darfst/kannst.
Er wollte nicht die Zählervariable "i" ändern sondern den höchsten Wert der Zählerschleife und der
läßt sich im Nachhinein nicht verändern. Der Endwert wird nur beim Schleifenstart ausgewertet.

Grüße

Frank
Frank
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Zeilen in Memo löschen

  Alt 14. Feb 2005, 11:39
Zitat von Sourcemaker:
Er wollte nicht die Zählervariable "i" ändern sondern den höchsten Wert der Zählerschleife und der
läßt sich im Nachhinein nicht verändern. Der Endwert wird nur beim Schleifenstart ausgewertet.
Man könnte die For-Schleife ja auch durch eine entsprechende while-Schleife ersetzen, bei der man die Zählvariable "manuell" rauf-/runterzählen muss. Dann kann man auch innerhalb der Schleife den Wert der Zählvariable ändern, ohne dass der Compiler meckert.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 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