"\0" in AnsiString schreiben
-
Spätestens aber bei verwenden von c_str() fehlt dann aber etwas.
Auch das ist kein Problem wenn man sich noch die Länge des Strings merkt.
-
Ok, warten wir ab, wie lange junimond braucht, um festzustellen, dass es doch nicht so richtig funktioniert...
-
Auch das ist kein Problem wenn man sich noch die Länge des Strings merkt.
Wozu einfach, wenn es auch kompliziert geht und auch noch ein konzeptioneller Fehler vorliegt
-
Solche Strings braucht man manchmal für WinAPI Funktionen. Dort werden einzelne Teilstrings mit \0 terminiert und mit einem leeren Teil-String wird das Ende signalisiert.
-
a) sind das keine Strings, sondern chars (zur Erinnerung ein C/C++ Datentyp)
b) wurde doch darauf hingewiesen, dass String intern mit chars arbeitetDort werden einzelne Teilstrings mit \0 terminiert und mit einem leeren Teil-String wird das Ende signalisiert.
Was könnte ein leerer Teilstring sein??
Fakt ist, dass in chars ein \0 das Ende darstellt.
-
Christian411 schrieb:
Fakt ist, dass in chars ein \0 das Ende darstellt.
Und in AnsiStrings auch, wie akaris Beispiel zeigt. Keine VCL-Funktion wird den AnsiString weiter als bis zum \0 abarbeiten, egal welche Größe in AnsiString[0] angegeben wird. Ergo kann er nichts mit dem so modifizerten AnsiString machen.
Würde mich noch interessieren, welche WinAPI-Funktion(en) solche Strings erwarten.
-
Würde mich noch interessieren, welche WinAPI-Funktion(en) solche Strings erwarten.
Vermutlich ist hier doch ein Zeiger auf char gemeint?!?(AnsiString.c_str())
-
Hallo
Joe meint wohl diese Bemerkung
hin schrieb:
Solche Strings braucht man manchmal für WinAPI Funktionen. Dort werden einzelne Teilstrings mit \0 terminiert und mit einem leeren Teil-String wird das Ende signalisiert.
Kenne auch keine Funktion, die sowas erwartet. Denn ein char* array[] ist das jedenfalls nicht.
bis bald
akari
-
SHFILEOPSTRUCT für SHFileOperation erwartet solche Formate in pFrom bzw. pTo. AnsiString ist für sowas aber natürlich falsch. Ein normaler char* tuts hier am besten. Immer vorausgesetzt, dass man auf ein solches char-Array kein string-Funktionen anwendet (aus string.h).
-
Ja richtig, aber dann spricht man üblicherweise voen einem doppelt terminierten char -> jedenfalls so etwas in der Richtung; keinesfalls von einem leeren Teilstring