AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mit POS Smilys ersetzen, findet aber nur 1. Smily
Thema durchsuchen
Ansicht
Themen-Optionen

Mit POS Smilys ersetzen, findet aber nur 1. Smily

Ein Thema von Die Muhkuh · begonnen am 27. Feb 2004 · letzter Beitrag vom 27. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#1

Mit POS Smilys ersetzen, findet aber nur 1. Smily

  Alt 27. Feb 2004, 07:24
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!
  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
 
#2

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

  Alt 27. Feb 2004, 07:26
Probiere das mal:

if pos(':-)', Richedit.Lines[i]) <> 0 then
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

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

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

  Alt 27. Feb 2004, 07:29
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]
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

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

  Alt 27. Feb 2004, 07:30
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>)
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

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

  Alt 27. Feb 2004, 07:32
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?
  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
 
#6

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

  Alt 27. Feb 2004, 07:35
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.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

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

  Alt 27. Feb 2004, 07:42
?

Wo soll dann die Schleife hin?
  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
 
#8

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

  Alt 27. Feb 2004, 07:44
Die soll dahin, wo du den Text nach Smileys überprüfst.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

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

  Alt 27. Feb 2004, 07:48
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;
  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
 
#10

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

  Alt 27. Feb 2004, 07:51
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:47 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