Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeile im Memo löschen (https://www.delphipraxis.net/23540-zeile-im-memo-loeschen.html)

Spike2k3 4. Jun 2004 16:51


Zeile im Memo löschen
 
Hi ich möchte gern ne Zeile, die eine Zahl enthält löschen :)

Also
Mir23
fack
lol
12 <--ganz wech
asd

Nicodius 4. Jun 2004 16:56

Re: Zeile im Memo löschen
 
Delphi-Quellcode:
 memo1.Lines.Delete(Index);

Spike2k3 4. Jun 2004 17:01

Re: Zeile im Memo löschen
 
und wenn das ungefähr 1000 zeilen sind darin immer ma wieder die zahlen sind (kapitelmarken)?
Und ich hab nich wirklich bock 1000 zeilen text zu durchsuchen^^

MrKnogge 4. Jun 2004 17:05

Re: Zeile im Memo löschen
 
das wirst du aber wohl müssen, sonst weist du ja nicht, ob der Text in der Zeile steht !

Delphi-Quellcode:
for i := Memo1.Lines.Count-1 do
  if Memo1.Lines.Strings[i] = '12' then Memo1.Lines.Delete(i);

Nicodius 4. Jun 2004 17:19

Re: Zeile im Memo löschen
 
sonst schreib dir ne funktion wo geprüft wird obs ne zahl ist =)

Skiron 4. Jun 2004 17:23

Re: Zeile im Memo löschen
 
Zitat:

Zitat von MrKnogge
das wirst du aber wohl müssen, sonst weist du ja nicht, ob der Text in der Zeile steht !

Delphi-Quellcode:
for i := Memo1.Lines.Count-1 do
  if Memo1.Lines.Strings[i] = '12' then Memo1.Lines.Delete(i);

man könnts aber auch so machen:
Delphi-Quellcode:
if Memo1.Lines.IndexOf('12') >= 0 then
  Memo1.Lines.Delete(Memo1.Lines.IndexOf('12'));

Nicodius 4. Jun 2004 17:27

Re: Zeile im Memo löschen
 
oder so


Delphi-Quellcode:
var i : Integer;
begin
  for i := 0 to Memo1.Lines.Count do
    If Pos('12', Memo1.lines.Strings[i]) > 0 then Memo1.Lines.Delete(i);
end;

meia und ich hab mich gerade an nem beisspiel abgeschröpft ... damit man ne zahl generell prüft und dann merk ich erst das "12" eh festgelegt ist :drunken: :wall: :x

Spike2k3 4. Jun 2004 17:36

Re: Zeile im Memo löschen
 
dann löscht man ja jede 12 im text

aber...hier ma n Ausschnitt:

Zitat:

33
MARLIN33
[gasps] Oh my goodnes!
34
CRUSH23
Whoa. Kill the motor, dude. Let us see what Squirt does flying solo.
35
SQUIRT144
Whoa! Whoa! That was so cool! Hey dad, did you see that? Did you see me? Did you see
what I did?
36
CRUSH56
You so totally rock, Squirt! So give me some fin..noggin..
37
So und nu sollen die 33-37 (es sind noch mehr, nur ich wollte nich alles posten) weg...
Aber die ZAhl hinter dem Namen soll bleiben !!!

Nicodius 4. Jun 2004 17:39

Re: Zeile im Memo löschen
 
nein die zahlen hinter den wörtern entfernt es bei mir nicht :?

Spike2k3 4. Jun 2004 17:42

Re: Zeile im Memo löschen
 
klick zweimal :)

Lantis 4. Jun 2004 17:43

Re: Zeile im Memo löschen
 
Hi, versuch's mal so:
Delphi-Quellcode:
var i,int:integer;
begin
  for i:=memo1.Lines.Count-1 downto 0 do
    if TryStrToInt(Trim(memo1.Lines[i]), int) // Prüfung ob Integer
      then memo1.Lines.Delete(i);
  end;
end;
das Trim, falls Leerzeichen stören

Gruß Lantis

Nicodius 4. Jun 2004 17:46

Re: Zeile im Memo löschen
 
hey trystrtoint ist ja echt super das kannte ich nicht mal :D

Lantis 4. Jun 2004 17:49

Re: Zeile im Memo löschen
 
Hi, versuch's mal so:
Delphi-Quellcode:
var i,int:integer;
begin
  for i:=memo1.Lines.Count-1 downto 0 do
    if TryStrToInt(Trim(memo1.Lines[i]), int) // Prüfung ob Integer
      then memo1.Lines.Delete(i);
  end;
end;
das Trim, falls Leerzeichen stören

Gruß Lantis

SirThornberry 4. Jun 2004 17:49

Re: Zeile im Memo löschen
 
eigentlich ist das
Delphi-Quellcode:
for i := Memo1.Lines.Count-1 do
  if Memo1.Lines.Strings[i] = '12' then Memo1.Lines.Delete(i);
schon beinahe die richtige lösung. Es sollte jedoch so aussehen
Delphi-Quellcode:
for i := Memo1.Lines.Count-1 downto 0 do
  if Memo1.Lines.Strings[i] = '12' then Memo1.Lines.Delete(i);
downto damit nicht ein "Index out of Bounds" kommt...

und das ganze mit prüfung auf eine zahl zu verbinden sieht es dann so aus
Delphi-Quellcode:
for i := Memo1.Lines.Count-1 downto 0 do
begin
  try
    strtoint(Memo1.Lines.Strings[i]);
    Memo1.Lines.Delete(i);
  except end;
end;
Wenn in einer Zeile keine Zahl steht so wird eine Exception ausgelöst (welche mit try-except abgefangen wird) und die nachfolgende Delete-anweisung wird nicht augeführt... Ist jedoch in der zeile eine zahl so wird keine exception ausgelöst und die Delete-Anweisung wird ausgeführt

[Edit]Ich war wiedermal zu langsam :cry: und TryStrToInt hab ich auch ni verwendet... die perfekte Lösung wurde somit gepostet[Edit]

Spike2k3 4. Jun 2004 17:49

Re: Zeile im Memo löschen
 
ich auch nich, aber scheinbar funzt es :)

Danke digga :)
und es werden auch bei tausendmal klicken nur die festgelegten werte entfernt :)
BiG THX :D


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