Datei wird nicht komplett geschrieben...
-
Gast4567 schrieb:
was ist damit nicht in Ordnung?
Ungültiges C++: #include <string.h>
a) #include <string> (Für die Klasse std::string & Co)
b) #include <cstring> (Für die C-Bibliothek wie strcpy & Co)
-
ok, wie muss das ganze dann am besten aussehen (das es funtktioniert) ?
-
Ich bin mir jetzt wirklich nicht sicher, ob die append memberfunktion nicht evtl. schon bei einem \0 schluss macht, selbst wenn man einen count angibt, daher empfehle ich nun aus unwissenheit folgendes

result.append( buffer, buffer + bytes );
-
Na wie ich das sehe könnte es sein das du eine Endloschleife hast.
Endet das Programm auch?Was willst du denn machen die .exe runterladen?
-
War das jetzt ein Nulltext, um uns alle mit deinem Nickname zu beglücken?
-
ja das programm endet, ja ich will die datei herunterladen...
ich bekomm auch eine Datei erstellt nur fehlen da immer ~100-1000KB
-
@Decimad: genau das ist es, jetzt funktioniert es, 1000 dank...
result.append( buffer, buffer + bytes );
-
Ich habe das gaze mal getestet bekomme ein 1,54 mb großes Exe file.
Wäre das Korrekt?Prob nur das ding ist nich ausführbar.
Mal sehn:)Wird schon;)
-
HostBB schrieb:
Wäre das Korrekt?Prob nur das ding ist nich ausführbar.
Was heisst "nicht ausführbar"?
Die Grösse erreicht man noch relativ schnell, wenn man die C++-Standardbibliothek nutzt.
-
Das er mir ne Fehlermeldung von Windows gewurfen wird... das die Datei zu groß sein... kann aber net sein wie du meintest.
Liegt wohl daran das ... vllt nen wenig müll in dem File steht.
Dank .append(buffer,buffer + byte) geht es jetzt.Könnt ihr mir mal den Unterschied zwischen .append und += erklären
beide führen ja einen append aus oder habe ich das falsch verstanden?
-
Semantisch sollten die eigentlich gleich sein, wenn man einen String anhängt. Bei
append()kannst du einfach noch weitere Argumente übergeben, was beim Operator natürlich nicht möglich ist.Genaueres findest du unter www.cplusplus.com.
-
append ist ja tausendmal überladen. operator+=( const char* ) ist halt dasselbe wie append( const char* ). Beide hängen Nullterminierte Strings hintenan. Nun weiß die Funktion ja nicht, dass da ein \0 evtl. noch gar nicht das letzte Terminalzeichen ist und bricht halt ab. In Executables wird man aber recht häufig 0-Bytes anfinden, darum kopierst du mit operator+=(const char*) oftmals nicht alles aus dem buffer in den string.
-
Und da recv den Buffer nicht nullterminiert, und er vor recv auch nicht mit Nullen gefüllt wird, und auch nicht mit Hand terminiert wird, könnte es sogar sein dass zuviel geschrieben wird. Bzw. sogar dass das Programm einfach abstürzt.
Oder violette Kürbisse auf der Wand wachsen lässt.