Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi INDY10 IRC ASCII Zeichen ersetzen (https://www.delphipraxis.net/110548-indy10-irc-ascii-zeichen-ersetzen.html)

Black-Rider 19. Mär 2008 19:52


INDY10 IRC ASCII Zeichen ersetzen
 
Hallo,
wenn man im IRC Farben schreibt werden die immer als ASCII ausgeben.
Nun hab ich von meinem Kumpel (er hat nen IRC bot in php geschrieben) einen PHP Code, den ich eigl. bloß nach Delphi umschreiben muss, was aber leider nicht so ganz funkioniert. Der ASCII Code soll einfach weggelassen werden. Nich durch Farben ersetzt etc!
Der PHP Code sieht wie folgt aus:
Zitat:

$txc = preg_replace('/('.chr(3).'(([0-1][0-5]|[0-9])\,([0-1][0-5]|[0-9])|([0-1][0-5]|[0-9]))|'.chr(3).'|'.chr(2).'|'.chr(22).'|'.chr(9).')/',"", $tx);
Und ich hab diesen PHP Code soweit in Delphi "umgeformet":
Delphi-Quellcode:
procedure TForm1.IdIRC1Message(Sender: TObject; AUser: TIdIRCUser;
  AChannel: TIdIRCChannel; Content: String);
var
  RegExpr: TRegExpr;
begin
  RegExpr := TRegExpr.Create;
  RegExpr.Expression := ('/(#3(([0-1][0-5]|[0-9])\,([0-1][0-5]|[0-9])|([0-1][0-5]|[0-9]))|#3|#2|#22|#9)/');
  RegExpr.Exec(Content);
  Content := RegExpr.Replace(Content, '');
  Memo1.Lines.add(auser.nick + ': ' + content);
end;
Das Programm lässt sich starten nur wird leider nix ersetzt!

MFG
Black-Rider

marabu 20. Mär 2008 14:35

Re: INDY10 IRC ASCII Zeichen ersetzen
 
Hallo,

deine Expression ist keine korrekte Übersetzung der PHP RE - aber die schaut für mich auch nicht passend aus.

Um Delphi Zeichen-Literale (z.B. #3) einzubringen musst du String Literale unterbrechen:

Code:
 '/('#3'(([0-1][0-5]|[0-9])\,([0-1][0-5]|[0-9])|([0-1][0-5]|[0-9]))|'#3'|'#2'|'#22'|'#9')/'
Oder du verwendest gleich die regex Notation \xnn.

Statt [0-1][0-5]|[0-9] ist auch [\d]{1} möglich - der erste Ausdruck erkennt 000 bis 159, der zweite jede Zahl.

Die Verwendung von Farbe in Verbindung mit IRC scheint mir nicht genormt zu sein. Die einzelnen Clients erwarten unterschiedliche Syntax, sowohl was den Introducer (^C oder ^K) betrifft, als auch die Farbkodierung (ANSI- oder CHAR-Modus).

Grüße vom marabu


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