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 Mit POS Smilys ersetzen, findet aber nur 1. Smily (https://www.delphipraxis.net/17023-mit-pos-smilys-ersetzen-findet-aber-nur-1-smily.html)

Die Muhkuh 27. Feb 2004 07:24


Mit POS Smilys ersetzen, findet aber nur 1. Smily
 
Nunja, komischer Titel aber er trifft genau zu!

Also ich hab folgenden Code:
Delphi-Quellcode:
procedure TForm1.SmilyAktuallisieren(Richedit: TRxRichEdit);
var
  I : Integer;
begin
  for I := 0 to Richedit.Lines.Count - 1 do
  begin
    if pos(':-)', Richedit.Lines.Text) <> 0 then
    begin
      with Richedit do
      begin
        SelStart := pos(Copy(Richedit.Lines.Text, pos(':-)', Richedit.Lines.Text) - 2, 2), Richedit.Lines.Text);
        SelLength := 3;
        SelText := ' ';
        Form1.Image1.picture.LoadFromFile(BildPath + 'S_grinsend.bmp');
        InsertSmily;
      end;
    end;

    if pos(':-(', Richedit.Lines.Text) <> 0 then
    begin
      with Richedit do
      begin
        SelStart := SelStart - 4;
        SelLength := 3;
        SelText := '';
        Form1.Image1.picture.LoadFromFile(BildPath + 'S_schmollend.bmp');
        InsertSmily;
      end;
    end;

    if pos(':-|', Richedit.Lines.Text) <> 0 then
    begin
      with Richedit do
      begin
        SelStart := SelStart - 4;
        SelLength := 3;
        SelText := '';
        Form1.Image1.picture.LoadFromFile(BildPath + 'S_neutral.bmp');
        InsertSmily;
      end;
    end;

    if pos(':-D', Richedit.Lines.Text) <> 0 then
    begin
      with Richedit do
      begin
        SelStart := SelStart - 4;
        SelLength := 3;
        SelText := '';
        Form1.Image1.picture.LoadFromFile(BildPath + 'S_lachend.bmp');
        InsertSmily;
      end;
    end;
  end;
end;
Ich füge in ein RXRichEdit einen Smily ein. Der Code für einen lachenenden ist :-). Da geht auch aber wenn zwei mal ein lachender Smily eingefügt wird. Bekommt nur der erste ein Bild beim zweiten steht immer noch der code da (:-)). Kann mir mal jemand helfen? Das Problem ist das immer nur das erste Vorkommen geprüft wird und dann hörts auf!

Matze 27. Feb 2004 07:26

Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
 
Probiere das mal:

Delphi-Quellcode:
if pos(':-)', Richedit.Lines[i]) <> 0 then

Sharky 27. Feb 2004 07:29

Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
 
Hai Spider,

Du prüfst ja auch nur einmal pro Zeile ob ein "Smily" da ist. Du solltest dein Pos-Prüfung in eine Schleife packen die so lange durchlaufen wird bis der Smily in der Zeile nicht mehr gefunden wird.

[Edit] Und der Hinweis von Matze ist natürlich auch zu beachten ;-) [/Edit]

Die Muhkuh 27. Feb 2004 07:30

Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
 
ne geht auch net.

Jetzt sieht das so aus:

Code:
Admin (27.02.2004 08:29:57):
asd (Hier ist ein Smily) in (27.02.2004 08:30:00):
asd :-) asdasd
Admin (27.02.2004 08:30:04):
 asas
Da wo noch :-) ist kein Smily.


PS: Da wo in (<Datum, Zeit>) steht sollte Admin (<Datum , Zeit>)

Die Muhkuh 27. Feb 2004 07:32

Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
 
Zitat:

Zitat von Sharky
Hai Spider,

Du prüfst ja auch nur einmal pro Zeile ob ein "Smily" da ist. Du solltest dein Pos-Prüfung in eine Schleife packen die so lange durchlaufen wird bis der Smily in der Zeile nicht mehr gefunden wird.

[Edit] Und der Hinweis von Matze ist natürlich auch zu beachten ;-) [/Edit]


Hi Fisch,

Ähm die Pos-Prüfung ist doch schon in einer Schleife oder wie meinst du des?

Matze 27. Feb 2004 07:35

Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
 
Du solltest 2 Schleifen nehmen, eine, die die Zeile komplett durchläuft und eine, die alle zeilen durch läuft.

Die äußere Schleife durchläuft alle zeilen, die innere jedes zeichen einer zeile. :gruebel:

Die Muhkuh 27. Feb 2004 07:42

Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
 
:wiejetzt:?

Wo soll dann die Schleife hin?

Matze 27. Feb 2004 07:44

Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
 
Die soll dahin, wo du den Text nach Smileys überprüfst.

Die Muhkuh 27. Feb 2004 07:48

Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
 
Also hier:
Delphi-Quellcode:
 for I := 0 to Richedit.Lines.Count - 1 do
  begin
    if pos(':-)', Richedit.Lines.Text) <> 0 then
    begin
      with Richedit do
      begin
        for II := 0 to {Was???} do //<-- HIER?
        begin
        SelStart := pos(Copy(Richedit.Lines.Text, pos(':-)', Richedit.Lines.Text) - 2, 2), Richedit.Lines.Text);
        SelLength := 3;
        SelText := ' ';
        Form1.Image1.picture.LoadFromFile(BildPath + 'S_grinsend.bmp');
        InsertSmily;
      end;
    end;
    end;

Matze 27. Feb 2004 07:51

Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
 
ne, so:

Delphi-Quellcode:
for i := 0 to RichEdit.Lines.Count.1 do
  for i := 1 to LängederZeile(kA, wie der Befehl ist :angle2:) do
  begin
     //Code
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz