Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String von icq-client enthält sachen wie #$D#$A oder #0 (https://www.delphipraxis.net/91263-string-von-icq-client-enthaelt-sachen-wie-%24d-%24-oder-0-a.html)

mtin 2. Mai 2007 15:24


String von icq-client enthält sachen wie #$D#$A oder #0
 
Hallo!
ich bin gerade dabei einen kleinen icq-bot zu schreiben, einfach nur aus Spaß an der Freude :zwinker:

Hab dazu auch gleich die TICQLib Komponente benutzt
dabei gibts jetzt allerdings ein Problem, die Nachrichten empfange ich in der Prozedur:
procedure TForm1.icqMessageRecv(Sender: TObject; Msg, UIN: string);
als einfachen String (Msg)
Allerdings hat dieser hintendran irgendwelche komische sachen :gruebel: wenn ich mir den im debugger anschaue
Schreibe ich z.b. mit Trillian (meinem Standard-Client) eine Nachricht ("blub") dann erscheint im debugger
'blub'#$D#$A
und für jedes Enterzeichen noch ein eingeschobenes #$D#$A
Schreibe ich die Nachricht mit dem Online-Java-Client, so kommt nur für jedes Enterzeichen das #$D#$A und bei einer einfachen einzeiligen Nachricht einfach nur
'blub'
Bei Flash icq2go client zu guter letzt kann man gar keine enterzeichen verschicken und jede Nachricht sieht so aus
'blub'#0

wie bekomm ich die jetzt auf ein Einheitliches Format, damit ich mit copy() und pos() halbwegs ordentlich arbeiten kann? weil so wird das etwas schwierig wenn jeder client da irgendwas anderes sendet :(

stifflersmom 2. Mai 2007 15:28

Re: String von icq-client enthält sachen wie #$D#$A oder #0
 
Da beleibt Dir wohl oder übel nichts anderes übrig,
die verschiedenen Stringformatierungen der verschiedenen
Clients auf ein einheitliches Format zu bringen,
mit StringReplace z.B.

Moin

mtin 2. Mai 2007 15:33

Re: String von icq-client enthält sachen wie #$D#$A oder #0
 
hmmm :wall:

naja gut wenns denn sein muss^^

aber kann ich denn bei StringReplace dann einfach #$D#$A angeben? oder '#$D#$A'? weil irgendwie sind das ja so steuerzeichen oder?

edit so wie auf dem Screenshot funktionierts ja schonmal nicht, obwohl die obere Zeile schon durchlaufen ist sieht Msg im Debuggerfenster immernoch so merkwürdig aus -.-

http://img400.imageshack.us/img400/2...benanntgv4.jpg

nochmal Edit, habs jetzt, danke euch :) (hab wohl StringReplace falsch benutzt^^)

stifflersmom 2. Mai 2007 15:35

Re: String von icq-client enthält sachen wie #$D#$A oder #0
 
Zitat:

Zitat von mtin
hmmm :wall:

naja gut wenns denn sein muss^^

aber kann ich denn bei StringReplace dann einfach #$D#$A angeben? oder '#$D#$A'? weil irgendwie sind das ja so steuerzeichen oder?

Klar:
Delphi-Quellcode:
MeinString := StringReplace(MeinString,#13#10,'Was da jetzt hinsoll',[rfReplaceAll]);
Moin

mkinzler 2. Mai 2007 15:38

Re: String von icq-client enthält sachen wie #$D#$A oder #0
 
Da er es so anzeigt und nicht als Zeilenumbruch, sind es wohl keine Steuerzeichen

stifflersmom 2. Mai 2007 15:41

Re: String von icq-client enthält sachen wie #$D#$A oder #0
 
Zitat:

Zitat von mkinzler
Da er es so anzeigt und nicht als Zeilenumbruch, sind es wohl keine Steuerzeichen

Doch, er schauts sich's doch im Debugger an

mkinzler 2. Mai 2007 15:43

Re: String von icq-client enthält sachen wie #$D#$A oder #0
 
Zitat:

Doch, er schauts sich's doch im Debugger an
Habe ich irgendwie Überlesen.

marabu 22. Jul 2007 15:56

Re: String von icq-client enthält sachen wie #$D#$A oder #0
 
Hallo,

ich weiß: Dieser Thread ist so tot wie TICQLib, aber der Ordnung halber:
  • StringReplace() ist eine Funktion und liefert das Ergebnis als Funktionswert zurück.
  • Der Null-Char signalisiert einen C-String und kann einfach per type cast eliminiert werden.
  • Eingeschlossene Zeilentrenner würde ich nicht entfernen.
Delphi-Quellcode:
// StringReplace() ist eine Funktion
Msg := StringReplace(Msg, 'x', 'u', [rfIgnoreCase, rfReplaceAll]);

// Null-Char im String-Buffer?
Msg := String(PChar(Msg));

// Entfernen von nicht eingeschlossenen Zeilentrennern:
Msg := Trim(Msg);
Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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 by Thomas Breitkreuz