Kleines Problem mit char array in TextOut!



  • hi, ich habe mir ein statischen char array( static char szBufferText[ 128 ] ) angelegt. es steht noch nicht im array drin also hab ich es "eigentlich" geleer, szBufferText[ 0 ] = 0;, oder??? wenn ich es jetzt noch via' TextOut() ausgebe habe ich 128 "I"(striche) an der position zu stehen, hinter einander weg. das dürfte doch eigentlich gar nicht sein oder doch?, später möchte ich den inhalt aendern des array so das der text an der stelle auch immer ein anderer ist, und davor wollte ich das array ja leeren, doch nun hab ich immer diese striche da stehen. wie bekomm ich die weg?

    Gruß Tobi.



  • memset ... strcpy ... usw gibt 100 schlechte Möglichkeiten und mehr ^^



  • memset ... strcpy ... usw gibt 100 schlechte Möglichkeiten und mehr ^^

    was ist dann eine gute lösung?

    Gruß Tobi.



  • Naja desto größer das Array, desto länger arbeiten diese Funktion, das ist ein Nachteil. Entweder Du nimmst das in Kauf oder arbeitest mit einem zusätzlichen Flag alá 'fIsValidContent' oder so. ALternativ empfiehlt sich (sowieso) std::string/std::wstring.



  • Achja: Es gibt auch noch die Windows-Alternativen: ZeroMemory bzw. SecureZeroMemory.



  • sorry aber irgendwie geht das weder mit memset noch mit einem string es bleiben dennoch striche stehen ....



  • T0bi schrieb:

    ... static char szBufferText[128] ... szBufferText[0] = 0 ... wenn ich es jetzt noch via TextOut() ausgebe habe ich 128 "I"(striche) ...

    Der letzte Parameter von TextOut () muss die Stringlänge sein und nicht die Grösse von "szBufferText[128]".
    🙂



  • ROFL, na also lesen muss man schon 😃 ...

    EDIT, @T0bi, also so:

    TCHAR szBuffer[128];
    // ...
    szBuffer[0] = 0;
    TextOut(hDC, 0, 0, szBuffer, lstrlen(szBuffer));
    


  • hmm also nicht sizeof sonder strlen ?
    werd ich mal versuchen!

    Gruß Tobi.



  • tatsache strlen hats gebrqacht :), aber in den tuts die ich bislang ghelesen hab haben se auch immer mit sizeof gearbeitet ???



  • strlen/lstrlen geht einfach den String durch bis es ein '\0' findet.


Log in to reply