![]() |
Mit POS Smilys ersetzen, findet aber nur 1. Smily
Nunja, komischer Titel aber er trifft genau zu!
Also ich hab folgenden Code:
Delphi-Quellcode:
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!
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; |
Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
Probiere das mal:
Delphi-Quellcode:
if pos(':-)', Richedit.Lines[i]) <> 0 then
|
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] |
Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
ne geht auch net.
Jetzt sieht das so aus:
Code:
Da wo noch :-) ist kein Smily.
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 PS: Da wo in (<Datum, Zeit>) steht sollte Admin (<Datum , Zeit>) |
Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
Zitat:
Hi Fisch, Ähm die Pos-Prüfung ist doch schon in einer Schleife oder wie meinst du des? |
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: |
Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
:wiejetzt:?
Wo soll dann die Schleife hin? |
Re: Mit POS Smilys ersetzen, findet aber nur 1. Smily
Die soll dahin, wo du den Text nach Smileys überprüfst.
|
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; |
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. |
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