Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Memo --> bestimmtes Wort löschen (https://www.delphipraxis.net/56467-memo-bestimmtes-wort-loeschen.html)

Chrissi91 6. Nov 2005 13:15


Memo --> bestimmtes Wort löschen
 
Ich möchte gerne in einer If - Abfrage abfragen, ob ein bestimmtes Wort enthalten, wenn ja soll er dieses löschen.

Wie folgt wollte ich vorgehen, bis ich irgendwann stutzte und mir die Ideen ausgingen ;)

Delphi-Quellcode:
for i:=1 to length(memo1.text) do
 begin
  if copy(memo1.Text,i,5) <> 'Hallo' then
   begin
    //Hier bin ich stehen geblieben ... Wie lösche ich nun das Wort?
   end;
 end;
Noch etwas: Im Memotext stehen die als "Text" also zum Beispiel:

Hallo ... bla bla ... jkdfdjif ... Hallo ... blabla ... fneijf ... Bla Bla ...

Dann soll das rauskommen und ins selbe Memo übertragen werde (also ersetzt werden ;))

... bla bla ... jkdfdjif ... ... blabla ... fneijf ... Bla Bla ...

Hoffentlich kann mir jemand helfen ;)

Danke schon im Vorraus!

MrKnogge 6. Nov 2005 13:18

Re: Memo --> bestimmtes Wort löschen
 
Probier's doch mal mit
Delphi-Quellcode:
delete
:stupid:

Helmi 6. Nov 2005 13:19

Re: Memo --> bestimmtes Wort löschen
 
hallo

mach halt das:

Delphi-Quellcode:
  Memo1.Text := StringReplace(Memo1.Text, 'hallo', '', [rfReplaceAll]);
so wird jedes Wort "hallo" durch nix ersetzt.

Chrissi91 6. Nov 2005 13:27

Re: Memo --> bestimmtes Wort löschen
 
Danke ... Mit delete habe ich es auch schon versucht, aber hab ich net auf die Reihe bekommen :duck: dann nehme ich mal die Replacemethode

danke

Helmi 6. Nov 2005 13:39

Re: Memo --> bestimmtes Wort löschen
 
ich hab mal ein wenig weiter gemacht, wenn du ne schleife verwenden willst, vielleicht hilft dir das:

Delphi-Quellcode:
uses
  StrUtils;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Text := 'Hallo ... bla bla ... jkdfdjif ... Hallo ... blabla ... fneijf ... Bla Bla ...';

end;

procedure TForm1.Button1Click(Sender: TObject);
const
  Search_Text = 'Hallo';

var
  i: Integer;
  Position: Integer;
  S: String;

begin
  Position := 1;
  S        := Memo1.Text;

  for i := 1 to length(S) do
    begin
      Position := PosEx(Search_Text, S, Position);

      Delete(S, Position, length(Search_Text));
    end;

  Memo1.Text := S;
end;

malo 6. Nov 2005 15:08

Re: Memo --> bestimmtes Wort löschen
 
Grundsätzlich würde ich zum Suchen von Strings die Funktion Delphi-Referenz durchsuchenPos bzw. Delphi-Referenz durchsuchenPosEx, bzw. PosExPosEx (PosEx ist imho erst mit D6 oder D7 dazugekommen, deshalb haben das nicht alle) ;)

Das nur so am Rande :)

Airblader 6. Nov 2005 15:36

Re: Memo --> bestimmtes Wort löschen
 
Zitat:

Zitat von Chrissi91
Wie folgt wollte ich vorgehen, bis ich irgendwann stutzte und mir die Ideen ausgingen ;)

Delphi-Quellcode:
for i:=1 to length(memo1.text) do
 begin
  if copy(memo1.Text,i,5) <> 'Hallo' then
   begin
    //Hier bin ich stehen geblieben ... Wie lösche ich nun das Wort?
   end;
 end;

Und da hast du keine Fehlermeldung bekommen? :gruebel:
Du darfst eig. nur bis Length(Memo1.Text)-5 gehen, da du im Copy ja noch +5 machst :)

Mal abgesehen davon, dass die Methode nicht sonderlich gut ist ;) (Wurde ja gesagt)

air

MrKnogge 6. Nov 2005 15:39

Re: Memo --> bestimmtes Wort löschen
 
@Airblader
Du weist nicht ganz was copy macht oder ?

marabu 6. Nov 2005 17:21

Re: Memo --> bestimmtes Wort löschen
 
Hallo Leute,

was soll denn nun gelöscht werden - ein Wort oder ein string? Wörter zeichnen sich gegenüber strings dadurch aus, dass bestimmte Bedingungen an das Zeichen davor und danach geknüpft sind. Eure Vorschläge zielen alle auf strings, eingangs wurde aber nach Wörtern gefragt...

Grüße vom marabu

Chrissi91 6. Nov 2005 17:49

Re: Memo --> bestimmtes Wort löschen
 
Also letztendlich habe ich mit dem Replace befehl html tags aus einem memo entfernt, in das ich die shoutbox eingelesen habe ... ich versuche das sozusaen nachzumachen mit der shoutbox ...

wie kann ich denn ein einzelnes wort fett schreiben?also mit der replace methode soll Hallo entfernt werden und ein fettes A geschreiben werden, als beispiel.

geht das?

Helmi 6. Nov 2005 18:10

Re: Memo --> bestimmtes Wort löschen
 
mmh

eigentlich dürft es so gehen:
Delphi-Quellcode:
      with Memo1 do
        begin
          SelStart := Position;
          SelLength := length(Word);
          Memo1.SelText := Word;
        end;
um einen markierten Teil zu formatieren, gibts eigentlich noch SelAttributes, aber das gibts beim Memo nicht!
Scheint nicht zu gehen, einen markierten Teil zu formatieren

marabu 6. Nov 2005 18:16

Re: Memo --> bestimmtes Wort löschen
 
Helmi, du warst ganz nah dran - mit RichEdit anstelle von Memo geht es.

Grüße vom marabu

Helmi 6. Nov 2005 18:20

Re: Memo --> bestimmtes Wort löschen
 
ja ich weiss,

ich stand mal vor einem ähnlichen problem - ich hatte aber immer schon ein RichEdit benutzt und mir darauf hin eine function programmiert die eben mit SelStart, SelText, SelAttributes etc arbeitet um ein Word zu suchen, es entweder gegen ein anderes auszutauschen oder es einzufärben


@Chriss91: nimm anstatt dem Memo ein RichEdit (in der Palette: Win32) und dann schau dir mal SelText, SelStart, SelAttributes und SelLength an

Chrissi91 6. Nov 2005 18:22

Re: Memo --> bestimmtes Wort löschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke! Noch eine andere Frage zum Thema formatieren im Memo! Im Anhang ein Progrmm, dass ganz simpel die Shoutbox ausliest ... Wie bekomme ich die hässlichen Einrückungen und Leerzeilen weg?

Danke!

Helmi 6. Nov 2005 18:24

Re: Memo --> bestimmtes Wort löschen
 
das hab aber nix mehr mit dem eigentlichen Thread hier zu tun
ich würde da einen neuen Thread aufmachen und dann gleich mal noch nen QuellCode dazu tun

malo 6. Nov 2005 19:20

Re: Memo --> bestimmtes Wort löschen
 
Zitat:

Zitat von marabu
Hallo Leute,

was soll denn nun gelöscht werden - ein Wort oder ein string? Wörter zeichnen sich gegenüber strings dadurch aus, dass bestimmte Bedingungen an das Zeichen davor und danach geknüpft sind. Eure Vorschläge zielen alle auf strings, eingangs wurde aber nach Wörtern gefragt...

Grüße vom marabu

Um "Wörter" (bewusst in Anführgungsstrichen) ausfindig zu machen, müsste man den Text zuerst parsen. Also alles in eine T(String)List speichern (an verschiedenen Bedingungen kenntlich gemacht), dann alles rauslöschen, was kein Wort ist (oder die anderen vorher aussortieren) und dann die Liste durchgehen. Und das ist verdammt aufwendig... ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz