Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   \0 im String? (https://www.delphipraxis.net/65062-%5C0-im-string.html)

Pseudemys Nelsoni 11. Mär 2006 19:12


\0 im String?
 
Moin,

ich versuche gerade Daten aus einem Socket zu lesen und das solange, wie er connected ist, das funktioniert auch soweit, nur habe ich in meinen Strings manchmal sehr viele "\0" am Anfang....der Server sendet sie auf keinem Fall... Weiss jemand woher sowas kommen kann? Hier ein Screen: http://www.stdcall.de/ffs8.PNG

Wodurch kann sowas entstehen? Senden tut der Server sie nicht wie gesagt.

sECuRE 11. Mär 2006 19:20

Re: \0 im String?
 
Hi,

könnte daher kommen, dass du (oder der Server - woher willst du wissen, dass er das nicht sendet? Kennst du den Quelltext?) auf leere PChars zugreifst und diese zusammengefügt werden, PChars werden nämlich mit \0 abgeschlossen. Ich würde das Zeichen einfach ignorieren.

cu

Pseudemys Nelsoni 11. Mär 2006 19:25

Re: \0 im String?
 
Es ist ein IRC Server(euIRC), der sendet sowas nicht, das darf kein IRC Server, da das im rfc fest definiert ist wie die parameter dazustehn haben. Und das ist: [Prefix <Space>] <Command> <Paramater><CRLF>

also es gibt höchstens 1 leerzeichen der die parameter trennt und ein abschliessendes #13#10...aber nicht so ein schnickschnack wie #0#0#0#0#0#0.

Ich muss im Code irgendwo selbst diese Nullen reinpacken(was ich aber ja nicht möchte) nur weiss ich nicht wo. Und wie ich sie rausbekomme weiss ich auch nicht :(

sECuRE 11. Mär 2006 19:35

Re: \0 im String?
 
Hi,

ich wäre mir da nicht so sicher, was IRC-Server alles machen, obwohl's nicht im RFC festgehalten ist :).
Schau doch mal mit Ethereal oder einem anderen Packetsniffer, was tatsächlich über die Leitung geht - nur um eine Fehlersuche an der falschen Stelle auszuschließen (ich hab solche Zeichen aber ehrlich gesagt auch noch nie im IRC empfangen, bin aber auch nicht im euIRCnet).

cu

Pseudemys Nelsoni 11. Mär 2006 20:14

Re: \0 im String?
 
back ;)

ok, habe mit ethereal mal "geschnüffelt" und dort werden die #0 Zeichen nicht mitgesendet...

Übrigens sieht das ganze in der Konsole so aus: http://www.stdcall.de/ffs7.PNG . Die ganzen "spaces" müssen dringend weg, bzw dürfen nicht mit in den String (bei den letzten beiden Befehlen meine ich).

Der einzige Unterschied bei diesen 2 Befehlen ist, dass sie ca 2min nach dem connecten an mich gesendet werden...die anderen gleich sofort beim verbinden... irgendwie müssen die 0-Zeichen während des "nichtskommens" in den string kommen...hmm

sECuRE 11. Mär 2006 20:23

Re: \0 im String?
 
Hi,

ich würde Schritt für Schritt debuggen nun: erstmal unmittelbar nach dem Empfangen des Strings durch deine Socketkomponenten, nach jedem weiteren deiner eigenen Bearbeitungsschritte ebenfalls. So solltest du den Fehler recht schnell einkreisen können.

cu

faux 11. Mär 2006 21:34

Re: \0 im String?
 
OT:

@Pseudemys Nelsoni:
Was hast du denn für eine seltsame VS-Version; Die Menuleiste ist auf Englisch und die Toolbars sind auf Deutsch (Fehlerliste, Aufrufliste). :?
In der Titelleiste steht auch "Debuggen" anstatt von "Debugging".

Grüße
Faux


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