AnsiString



  • Hi,

    gibt es einen Unterschied zwischen:

    const AnsiString sMyString = "Das ist ein String";
    

    und

    AnsiString sMyString;
    
    ....
    
    sMyString = "Das ist ein String";
    sMyString.Unique();
    

    und wenn ja, welchen ?

    Danke und Gruß

    WoWe



  • Im ersten Fall benutzt du den Copy-Konstruktor, im zweiten den operator =.



  • Hallo WebFritzi,

    ich dachte mehr in Richtung "READ ONLY" und Programmsicherheit. Im ersten Fall ging ich davon aus const == Konstant == nicht veränderbar. Aber in einer Funktion, wo ich einzelne Zeichen von Strings verändere und dazu einen const AnsiString als "Schlüssel" einsetze, wird irgendwann mein const AnsiString auch verändert, also nicht "konstant" und auch ohne Fehlermeldung und Warnung.

    Erst wenn ich alle Strings (die ich verändere) mit Unique bearbeite, bleibt auch mein const AnsiString so wie er definiert wurde.



  • Also im erstem Fall hast du Recht. Du legst eine Konstante vom Typ AnsiString an der sich während der Laufzeit sich aber nicht mahr ändern lässt.
    Zum Fall 2 macht die Methode Unique das AnsiString-Objekt eindeutig.
    In der BCB - Hilfe steht das:

    Verwenden Sie diese Funktion, um einen String eindeutig zu machen (refcnt == 1). Unique setzt den Referenzzähler auf den String für das AnsiString-Objekt auf 1, damit dieses den String als einziges Objekt referenziert.

    Das heist, das man den AnsiString trotzdem während der Laufzeit noch ändern kann.


Log in to reply