AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Smilies im Richedit

Ein Thema von freak1985 · begonnen am 20. Jun 2005 · letzter Beitrag vom 23. Jun 2005
Antwort Antwort
Seite 2 von 3     12 3      
freak1985
(Gast)

n/a Beiträge
 
#11

Re: Smilies im Richedit

  Alt 21. Jun 2005, 14:27
PosEx()?

und das is doch in der schleife, oder net?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#12

Re: Smilies im Richedit

  Alt 21. Jun 2005, 14:28
Ja, vergiss den Teil in Klammern

PosEx ist in der Unit StrUtils dehklariert, näheres in der OH ...
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#13

Re: Smilies im Richedit

  Alt 21. Jun 2005, 14:36
also PosEx gibts in meiner delphi hilfe und in dieser unit net
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#14

Re: Smilies im Richedit

  Alt 21. Jun 2005, 14:41
Zitat:
PosEx (Funktion)

Die Funktion gibt den Indexwert eines Teilstrings zurück.

Unit
StrUtils

Kategorie
String-Verarbeitung

Delphi-Syntax:
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;


Beschreibung

PosEx gibt den Index von SubStr in S zurück, wobei die Suche bei Offset begonnen wird. Wenn Offset 1 ist (Vorgabe), entspricht PosEx Pos.

PosEx gibt 0 zurück, wenn SubStr nicht gefunden wird, Offset größer als die Länge von S ist oder Offset kleiner als 1 ist.
Das sagt meine OH (D7) ... welche Delphiversion hast du denn ?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#15

Re: Smilies im Richedit

  Alt 21. Jun 2005, 14:42
Gibt es erst genau ab D7.
Aber eigentlich sollte doch der Text entfernt werden und so auch Pos reichen .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#16

Re: Smilies im Richedit

  Alt 21. Jun 2005, 14:42
also ich habe sowas ähnliches schonmal programmiert und hab es etwas angepasst :

Delphi-Quellcode:
procedure ReplaceSmilie(Smile : String; Source : TRichedit);
var Posi : Integer;
    text : String;
begin
 text := Source.Text;
 while pos(Smile,Text) <> 0 do begin
  if pos(Smile,Text) > 0 then begin
   Posi := pos(Smile,Text);
   delete(Text,pos(Smile,Text),Length(Smile)); // ':)' wird gelöscht
   insert('hehe',Text,posi); // und an dessen stelle 'hehe' eingefügt. Bei dir eben das bild
  end;
  Source.Text := Text;
 end;
end;
Ich hoffe das dir das hilft und ich nicht irgendwie an dir vorbeirede ^^
Bei der Zeile mit

insert('hehe',Text,posi); musst du halt dein Smilie einfügen aber ich denke das das funktioniert.
Michael
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#17

Re: Smilies im Richedit

  Alt 21. Jun 2005, 14:45
@Khabarakh

das isses ja auch. Das funzt ja auch ne weile, aber irgendwann will er net mehr. ich bau mal ein test prg zusammen und poste es hier. vllt findet ihr den (wahrscheinlich kleinen, dummen) fehler
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#18

Re: Smilies im Richedit

  Alt 21. Jun 2005, 14:56
hm,

ich probier deinen code mal aus. aber hier erstmal mein aktuelles prog.
is ein jvRichedit, das das TRichedit das ja net so kann mit den bildern.
Angehängte Dateien
Dateityp: rar test_richedit_smilie_107.rar (189,6 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#19

Re: Smilies im Richedit

  Alt 21. Jun 2005, 14:58
Wenn du sowieso ein JvRichEdit benutzt, warum nimmst du nicht die Funktion FindText? Wenn du stSetSelection angibst, dann markiert die dir sogar schon die Fundstelle.
Volker
  Mit Zitat antworten Zitat
freak1985
(Gast)

n/a Beiträge
 
#20

Re: Smilies im Richedit

  Alt 21. Jun 2005, 15:10
@ Flocke.

danke für den tipp. hab ich übersehen.

hab das nun auch so gemacht, und daraus entsteht folgender code, der auch funzt


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  Smilie: array[1..13] of string;

  function GetImageIndex(Image: String): Integer;
  begin
    if image = '(cool)then Result := 0 else
    if image = ':-\then Result := 1 else
    if (image = ':-(') or (image = ':(') then Result := 2 else
    if (image = ':-)') or (image = ':)') then Result := 3 else
    if (image = ';-)') or (image = ';)') then Result := 4 else
    if (image = ':-D') or (image = ':D') then Result := 5 else
    if (image = ':P') or (image = ':p') or (image = ':-P') then Result := 6
    else
      Result := -1;
  end;

begin
  Smilie[1] := '(cool)';
  Smilie[2] := ':-\';
  Smilie[3] := ':-(';
  Smilie[4] := ':(';
  Smilie[5] := ':-)';
  Smilie[6] := ':)';
  Smilie[7] := ';-)';
  Smilie[8] := ';)';
  Smilie[9] := ':-D';
  Smilie[10] := ':D';
  Smilie[11] := ':P';
  Smilie[12] := ':-P';
  Smilie[13] := ':p';

  for i := 1 to High(Smilie) do
    if Pos(Smilie[i], ChatBox.Text) > 0 then
    begin
      ChatBox.FindText(Smilie[i], 0, Length(Chatbox.Text), [stSetSelection]);
      ChatBox.SelLength := Length(Smilie[i]);
      ChatBox.SelText := '';
      AddImageToRichEdit(GetImageIndex(Smilie[i]));
    end;

end;
es ist ja nun so, dass er zunächst einmal immer nur das ERSTE smilie von einer sorte ersetzt. ich brauch nun noch ne repeat oder while schleife für außenherum, sodass er auch alle vorkommenden ersetzt. nur fällt mir keine bedingung für die schleife ein!?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 19:07 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