Squint schrieb:
buf ist ein String. Ansi String ReceiveText(); gibt nichts weiter zurück, als einen String, empfangen von dem ClientSocket. Die Funktion ist schon in der Borland C++ 2006 mitdrin, und normalerweise klappt sie auch super. (Vergleichbar mit " recv() ")
Du befindest dich hier aber im Standard C++ Forum, erwarte also nicht, dass jemand weiss, was diese Funktion tut. Ich habe nämlich keine Ahnung und finde auf die Schnelle auch keine Dokumentation dazu. Ich programmiere nie in Borland oder mit der VCL.
Squint schrieb:
Das eine Nullterminierung stattgefunden hat ist sehr unwahrscheinlich, denn wie schon gesagt ist buf nach dem Empfangen vom ClientSocket 8129 Zeichen groß, (getestet mit buf.length() ), und nach Angaben des Servers, der gesagt hat der gesendete Chunk wäre 8051 Zeichen groß, ist das ziemlich Nahe.
Das ist völlig egal. In einen std::string kann ich einen String speichern, welcher ausschliesslich aus Nullterminierungen besteht und 8129 Zeichen lang ist. Ich nehme mal an, dass der AnsiString von VCL sehr ähnlich funktioniert (übrigen auch kein Standard C++, also muss er auch nicht in diesem Forum bekannt sein). Solche Stringklassen speichern die Länge separat ab und sind somit nicht mehr von der Nullterminierung abhängig, bzw. eine Nullterminierung kann in ihnen ohne Problem auftreten. Wenn man dann allerdings mit C Schnittstellen kommuniziert, und man daraus wieder ein C String baut, dann kann es zu Problemen kommen.
Squint schrieb:
Hoffentlich findet irgendjemand den Fehler oder hat sowas schonmal gelöst.
Recht unwahrscheinlich, da es ein sehr spezifischer Fehler ist. Der Fehler also in deinem geschriebenen Code liegt
Squint schrieb:
@EDIT So da ihr nun alle auf "\0" in buf tippt, hab ich mir das mal angeschaut, kann also WOHL sein, nur was sucht ne Null terminierung in einer HTML Seite?
Kommt darauf an, wie du die Sache einliest. Kann schon sein, dass da plötzlich irgendwo eine Nullterminierung reinrutscht.
Squint schrieb:
So 2. Frage: Wie krieg ich die nullterm. wieder weg;
Es geht nicht darum, dass du sie danach wegkriegst, sondern dass sie gar nicht erst passiert. Ich brauche allerdings Informationen zu ReceiveText, sonst kann ich dir nicht weiterhelfen. Gut wäre auch ein kurzes, minimales und kompilierbares Beispiel, wo der Fehler auch auftritt.
Grüssli