"\0" in AnsiString schreiben



  • Hallo

    es scheint soweit zu laufen, solange nur AnsiString verwendet wird. Spätestens aber bei verwenden von c_str() fehlt dann aber etwas.

    Fakt ist das für solche Sachen Streams die richige Wahl sind.

    bis bald
    akari



  • 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 arbeitet

    Dort 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


Anmelden zum Antworten