Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Smilies im Chat?? (https://www.delphipraxis.net/73711-smilies-im-chat.html)

Tobiax 22. Jul 2006 18:04


Smilies im Chat??
 
Hallo ich Programmiere gerade einen Chat und ich will Smilies in diesem Chat nur ich hab keinen Plan davon :coder2: also ich hab zwei Memos die Erste zum reinschreiben von Texten die andere zum lesen??
Es ist sehr wichtig für mich!


danke schon mal

arbu man 22. Jul 2006 18:07

Re: Smilies im Chat??
 
Vrwende ein richedit das bilderanzeigen kann und ersetze : ) durch :)

fkerber 22. Jul 2006 18:20

Re: Smilies im Chat??
 
Hi!

Such einfach mal hier im Forum nach Smilies, Chat o.ä. - das hatten wir öfter schon!


Ciao Frederic

Balu der Bär 22. Jul 2006 18:20

Re: Smilies im Chat??
 
Benutze bitte die Forensuche, hatten wir schon zig Threads zu...

Tobiax 22. Jul 2006 18:23

Re: Smilies im Chat??
 
Ja kann ich machen aber gib es eine Möglichkeit das in der Memo zu machen?
Und wie meindest du das mit erstzen?
danke für die Hilfe

Tobiax 22. Jul 2006 18:24

Re: Smilies im Chat??
 
PS hatte schon gesucht und nichts richtiges gefunden! :pale:

Balu der Bär 22. Jul 2006 18:26

Re: Smilies im Chat??
 
Ein Memo kann keine Bilder anzeigen, also wird das nichts mit deinen Smilies. Ich habe grade 4 Threads gefunden wo das Problem gelöst wird, suche oder setze gleich in JvRichedit ein, dass kann Bilder verarbeiten. ;)

Btw, du kannst deinen Beitrag über den Knopf rechts oben an jedem Post von dir editieren, falls du mal wieder ein P.S. reinsetzen willst. ;)

Tobiax 22. Jul 2006 18:31

Re: Smilies im Chat??
 
ok aber wir belasen es mal bei JvRichedit wie kann ich das machen das wenn ich zb. :) das das erste bild aus einer Imagelist angezeigt wird danke schon mal

ich bin noch Anfänger :oops:

mOzZzI 22. Jul 2006 19:49

Re: Smilies im Chat??
 
Links zu Chat und Smilies:

http://www.delphipraxis.net/internal...7db81e87b8e1a0
http://www.delphipraxis.net/internal...e6639a30b75bb1
http://www.delphipraxis.net/internal...e6639a30b75bb1

Grüße LuphiSoft

kabuco 22. Jul 2006 20:49

Re: Smilies im Chat??
 
Hallo,

ich habe für meinen Chat (NetChat Link) die ThtmlLite Komponente verwendet. Dort kann man dann auch mit HTML-Code den Text formatieren. Für CHatprogramme garnicht mal so schlecht.

Gruß kabuco

Tobiax 22. Jul 2006 21:02

Re: Smilies im Chat??
 
Danke für eure Hilfe aber ich brauch nur ein Codeausschnitt !
Danke

Sko 22. Jul 2006 21:25

Re: Smilies im Chat??
 
in meinem MiniChat mach ich das bisher so:

Delphi-Quellcode:
procedure TMainForm.BildEinfuegen(var Bilder: TImageList; const ImageIndex: integer);
var
  bitmap: TBitmap;
begin
  Bitmap := TBitmap.Create;
  try
    Bilder.GetBitmap(ImageIndex,Bitmap);
    REEmpfangen.InsertGraphic(Bitmap,false); //REEmpfangen = JvRichEdit
    with REEmpfangen.GetSelection do REEmpfangen.SetSelection(cpMin + 1, cpMin + 1, False);
  finally
    bitmap.Free;
  end;
end;

procedure TMainForm.SucheSmiley(const Smiley: string; ImageIndex: integer; Liste: TImageList);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
with REEmpfangen do
  begin
    if SelLength <> 0 then StartPos := SelStart + SelLength
    else StartPos := 0;
    ToEnd := Length(Text) - StartPos;
    FoundAt := FindText(Smiley, StartPos, ToEnd, []);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length(Smiley);
      BildEinfuegen(Liste, ImageIndex);
    end;
  end;
end;
wobei der Smiley als Text in den Nachrichten versendet wird (z. B. *grins* für :-D)

EDIT:
Zitat:

Zitat von kabuco
Hallo,

ich habe für meinen Chat (NetChat Link) die ThtmlLite Komponente verwendet. Dort kann man dann auch mit HTML-Code den Text formatieren. Für CHatprogramme garnicht mal so schlecht.

Danke für den Tipp, das werd ich mir mal für meinen MiniChat ansehen :thumb:

Tobiax 23. Jul 2006 07:44

Re: Smilies im Chat??
 
Hi Sko der Code ist gut aber was haben die proceduren Bildeinfügen und SucheSmily zu tun sind das nochmal Extra Sachen? und wie kann ich zb. grinz = :-D Einstelllen?



mfg.Tobiax

mkinzler 23. Jul 2006 08:45

Re: Smilies im Chat??
 
Indem du den String durchsuchst un die extra Kürzel durch die Smilies ersetzt.

Tobiax 23. Jul 2006 08:56

Re: Smilies im Chat??
 
Hi ich bin noch Anfänger und iach hab verstanden
Code:
 if FoundAt <> -1 then
durch was erstezen soll und string durchsuchen????? kannst du etwas Code geben da lernt man am besten danke dir :)

mkinzler 23. Jul 2006 09:05

Re: Smilies im Chat??
 
Schau dir mal die Funktionen Pos, PosEx unr StringReplace an.

Tobiax 23. Jul 2006 09:11

Re: Smilies im Chat??
 
Ja schon aber was soll da sein """Rücksicht"""" :oops:

mkinzler 23. Jul 2006 09:17

Re: Smilies im Chat??
 
Willst du was Lernen oder sollen wir dir hier fertige Lösungen liefern?

Also mit der Funktion Pos kannst du einen Teilstring innerhalb eines anderen finden. Die Funktion liefert dir die Position des gefundenen Teilstrings innerhalb des anderen Strings zurück.
PosEx ist eine Erweiterung, bei der man angeben kann ab welchem Zeichen gesucht werden soll.
StringReplace ersetzt, wie der Name schon andeutet Teilstrings innerhalb eines String s.

Wenn man eine Funktion oder deren Parameter nicht kennt hilft oft die Hilfe weiter.
Bei Delphi sind auch einen Menge Demos dabei.

Tobiax 23. Jul 2006 09:26

Re: Smilies im Chat??
 
Ich will schon was lernen aber ich versteh es einfach nicht mit dem Pos.... da wäre etwas Code sinnvoller da kenn ich auch lernen und testen und so also ich hatte schon sowas hat nicht geklappt wie ein smilie code da musste ich sowas hinschreiben
Code:
const
  CImageToString: array[0..19] of string = (
':-)', { Lachen }
':'(', { Weinen }
':-#', { Küssen }
':-D', { Großes Lachen }
':-p', { Zunge rausstecken }
':-o', { Überrascht }
'>-I', { sauer }
'8-)', { Sonnenbrille }
'>-)', { Böse }
':-x', { Halt die Klappe }
';-)', { Zwinkern }
':-y', { Stinkefinger }
':-q', { *Lecker* }
':-[', { Wütend }
':-.', { Unschuldig }
':-]', { Hinterlistig }
'8-o', { Hippie }
'8-]', { PC-Freak }
':Io', { Italiener }
':-B', { Hasenzähne }
    );
das waren dann die eingabe codes??

mfg.Tobiax

mkinzler 23. Jul 2006 09:33

Re: Smilies im Chat??
 
Pos:
Delphi-Quellcode:
    str := 'Luigi ist ein Italiener';
    i := Pos( 'Italiener', str); // Liefert 15 zurück weil der erste Buchstaben des Suchstrings ( Italiener) an Position 15 des zu durchsuchenden Strings (str) steht.
StringReplace:
Delphi-Quellcode:
  newstr := StringReplace( str, 'Italiener', ':Io', [rfReplaceAll]);

Tobiax 23. Jul 2006 09:44

Re: Smilies im Chat??
 
KK erst mal danke für den Code aber wie füge ich den ein letzte Frage

Dank Danke Danke!!!!

mkinzler 23. Jul 2006 09:45

Re: Smilies im Chat??
 
Zitat:

Zitat von Tobiax
KK erst mal danke für den Code aber wie füge ich den ein letzte Frage

Dank Danke Danke!!!!

Diese Frage verstehe ich nicht

Tobiax 23. Jul 2006 09:57

Re: Smilies im Chat??
 
Wie füge ich jetzt deinen Code in den ein?
Code:
procedure TMainForm.BildEinfuegen(var Bilder: TImageList; const ImageIndex: integer);
var
  bitmap: TBitmap;
begin
  Bitmap := TBitmap.Create;
  try
    Bilder.GetBitmap(ImageIndex,Bitmap);
    REEmpfangen.InsertGraphic(Bitmap,false); //REEmpfangen = JvRichEdit
    with REEmpfangen.GetSelection do REEmpfangen.SetSelection(cpMin + 1, cpMin + 1, False);
  finally
    bitmap.Free;
  end;
end;

procedure TMainForm.SucheSmiley(const Smiley: string; ImageIndex: integer; Liste: TImageList);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
with REEmpfangen do
  begin
    if SelLength <> 0 then StartPos := SelStart + SelLength
    else StartPos := 0;
    ToEnd := Length(Text) - StartPos;
    FoundAt := FindText(Smiley, StartPos, ToEnd, []);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length(Smiley);
      BildEinfuegen(Liste, ImageIndex);
    end;
  end;
end;

Sko 23. Jul 2006 10:01

Re: Smilies im Chat??
 
Zitat:

Zitat von Tobiax
Hi Sko der Code ist gut aber was haben die proceduren Bildeinfügen und SucheSmily zu tun sind das nochmal Extra Sachen? und wie kann ich zb. grinz = Very Happy Einstelllen?



mfg.Tobiax

Also, ich hab in meinem Programm eine Imagelist mit dem Namen "Smileys" in der die Bilder drin sind. Wenn eine Nachricht kommt rufe ich die Prozedur SucheSmiley auf, z. B. so:
Delphi-Quellcode:
SucheSmiley(':)',0, Smileys);
Diese Prozedur sucht den entsprechenden String (hier :)), löscht ihn und ruft die Prozedur Bildeinfuegen auf, die an diese Position dann den entsprechenden Smiley setzt(hier das Bild mit dem Index 0 aus der Imagelist "Smileys". Bei mir sieht das im ganzen dann so aus:
Delphi-Quellcode:
for i := 0 to 10 do
  begin
    SucheSmiley('*:-D*',0, MainForm.Smileys);
    SucheSmiley('*;-)*',1, MainForm.Smileys);
    SucheSmiley('*evil*',2, MainForm.Smileys);
    SucheSmiley('*cry*',3, MainForm.Smileys);
    SucheSmiley('*cool*',4, MainForm.Smileys);
    SucheSmiley('*shock*',5, MainForm.Smileys);
    SucheSmiley('*thumbup*',6, MainForm.Smileys);
    SucheSmiley('*grübel*',7, MainForm.Smileys);
    SucheSmiley('*angel*',8, MainForm.Smileys);
    SucheSmiley('*idea*',10, MainForm.Smileys);
    SucheSmiley('*->*',11, MainForm.Smileys);
    SucheSmiley('*!*',12, MainForm.Smileys);
    SucheSmiley('*?*',13, MainForm.Smileys);
    SucheSmiley('*freak*',14, MainForm.Smileys);
    SucheSmiley('*stupid*',15, MainForm.Smileys);
    SucheSmiley('*:-S*',16, MainForm.Smileys);
    SucheSmiley('*neutral*',17, MainForm.Smileys);
    SucheSmiley('*wiejetz*',0, MainForm.Smileys_2);
    SucheSmiley('*heuldoch*',1, MainForm.Smileys_2);
    SucheSmiley('*tuichdoch*',2, MainForm.Smileys_2);
  end;
Ist sicher nicht die optimalste Methode, ich bin auch noch Anfänger. Ich hab den ganzen Spass noch in einen Thread ausgelagert, da merkt mans nicht beim Nachrichtenschreiben etc.

Tobiax 23. Jul 2006 10:07

Re: Smilies im Chat??
 
OK hab alles Danke!!!!!

fkerber 23. Jul 2006 10:23

Re: Smilies im Chat??
 
Hi!
Zitat:

Zitat von Sko
Diese Prozedur sucht den entsprechenden String (hier :)), löscht ihn und ruft die Prozedur Bildeinfuegen auf, die an diese Position dann den entsprechenden Smiley setzt(hier das Bild mit dem Index 0 aus der Imagelist "Smileys". Bei mir sieht das im ganzen dann so aus:
Delphi-Quellcode:
for i := 0 to 10 do
  begin
    SucheSmiley('*:-D*',0, MainForm.Smileys);
    SucheSmiley('*;-)*',1, MainForm.Smileys);
    SucheSmiley('*evil*',2, MainForm.Smileys);
    SucheSmiley('*cry*',3, MainForm.Smileys);
    SucheSmiley('*cool*',4, MainForm.Smileys);
    SucheSmiley('*shock*',5, MainForm.Smileys);
    SucheSmiley('*thumbup*',6, MainForm.Smileys);
    SucheSmiley('*grübel*',7, MainForm.Smileys);
    SucheSmiley('*angel*',8, MainForm.Smileys);
    SucheSmiley('*idea*',10, MainForm.Smileys);
    SucheSmiley('*->*',11, MainForm.Smileys);
    SucheSmiley('*!*',12, MainForm.Smileys);
    SucheSmiley('*?*',13, MainForm.Smileys);
    SucheSmiley('*freak*',14, MainForm.Smileys);
    SucheSmiley('*stupid*',15, MainForm.Smileys);
    SucheSmiley('*:-S*',16, MainForm.Smileys);
    SucheSmiley('*neutral*',17, MainForm.Smileys);
    SucheSmiley('*wiejetz*',0, MainForm.Smileys_2);
    SucheSmiley('*heuldoch*',1, MainForm.Smileys_2);
    SucheSmiley('*tuichdoch*',2, MainForm.Smileys_2);
  end;
Ist sicher nicht die optimalste Methode, ich bin auch noch Anfänger. Ich hab den ganzen Spass noch in einen Thread ausgelagert, da merkt mans nicht beim Nachrichtenschreiben etc.

Warum rufst du denn das ganze 11x auf?

Ciao Frederic

Sko 23. Jul 2006 10:30

Re: Smilies im Chat??
 
Weil bei jedem Aufruf der Prozedur nur ein Smiley ersetzt wird, und beim testen wurde manchmal mehrmals der gleiche Smiley in eine Nachricht eingefügt, das sah dumm aus wenn der 2 oder 3 erst später ersetzt wurde, daher hab ichs in eine Schleife gepackt. Bin halt Anfänger :lol:

Tobiax 23. Jul 2006 10:37

Re: Smilies im Chat??
 
Hi Sko hab doch noch eine Frage wo soll ich den erken code einfügen
Code:
SucheSmiley(':)',0, Smileys);
und wo bekomm ich JvRichEdit her ???


Danke nochmal

PS: wo soll ich den einfügen
Code:
for i := 0 to 10 do
  begin
    SucheSmiley('*:-D*',0, MainForm.Smileys);
    SucheSmiley('*;-)*',1, MainForm.Smileys);
    SucheSmiley('*evil*',2, MainForm.Smileys);
    SucheSmiley('*cry*',3, MainForm.Smileys);
    SucheSmiley('*cool*',4, MainForm.Smileys);
    SucheSmiley('*shock*',5, MainForm.Smileys);
    SucheSmiley('*thumbup*',6, MainForm.Smileys);
    SucheSmiley('*grübel*',7, MainForm.Smileys);
    SucheSmiley('*angel*',8, MainForm.Smileys);
    SucheSmiley('*idea*',10, MainForm.Smileys);
    SucheSmiley('*->*',11, MainForm.Smileys);
    SucheSmiley('*!*',12, MainForm.Smileys);
    SucheSmiley('*?*',13, MainForm.Smileys);
    SucheSmiley('*freak*',14, MainForm.Smileys);
    SucheSmiley('*stupid*',15, MainForm.Smileys);
    SucheSmiley('*:-S*',16, MainForm.Smileys);
    SucheSmiley('*neutral*',17, MainForm.Smileys);
    SucheSmiley('*wiejetz*',0, MainForm.Smileys_2);
    SucheSmiley('*heuldoch*',1, MainForm.Smileys_2);
    SucheSmiley('*tuichdoch*',2, MainForm.Smileys_2);
  end;
mfg.Tobiax

fkerber 23. Jul 2006 10:40

Re: Smilies im Chat??
 
Hi!

Der Code sollte dahin, wo du eingehende Messages bearbeitest und JvRichedit gehört zu den Jedis:
http://www.delphi-jedi.org/


Ciao Frederic

Sko 23. Jul 2006 10:45

Re: Smilies im Chat??
 
Du kannst ihn in's OnChange-Event des JvRichEdits einbauen, dann wird immer nach Smileys gesucht wenn sich der Inhalt des JvRichEdits ändert.

Tobiax 23. Jul 2006 10:47

Re: Smilies im Chat??
 
ja denn Code versteh ich schon aber wo bekomme ich das Jedi her auf der Page gib es viele Sachen bitte direkten Link und Name Danke!"!

fkerber 23. Jul 2006 10:55

Re: Smilies im Chat??
 
Hi!

Ein bisschen mehr Eigeninitiative könnte auch nicht schaden... :?
http://prdownloads.sourceforge.net/j...2.zip?download


Ciao Frederic

Tobiax 23. Jul 2006 11:26

Re: Smilies im Chat??
 
Hab es heruntergeladen wie Installiere ich das hab schon probiert aber hat nicht geklappt auch mit Readme nicht


Bitte bitte helfen!

fkerber 23. Jul 2006 11:29

Re: Smilies im Chat??
 
Hi!

Prinzipiell wäre ein neuer Thread fällig, da es sich um eine neue Frage handelt, ABER es finden sich schon einige Threads dazu im Forum - also erstmal suchen!


Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 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