Konvertierung von AnsiString in ein unsigned char array



  • Hallo,
    habe mal eine Frage. Wahrscheinlich ist die Lösung ganz einfach. Ich Poste erstmal ein Teil des Quellcodes.

    int i;
    	 int Size;
    	 unsigned char buf[31];
    
    	 Size = UserStr.Length();
    
    	 if( Size > 29 ) Size = 29;
    	 for( i=0; i<31; i++ )
    	 {
    		if( i<Size )
                            //Problem tritt hier auf!
    			 buf[i] = (unsigned char)UserStr[i];
    		else
    			 buf[i] = 0;
    	 }
    

    Das Problem ist, dass ich die Zeichen des AnsiString's "UserStr" in das unsigned char Array "buf" integrieren möchte. Leider gibt es im Debug-Modus einen Fehler bei dem Versuch, obwohl der Compiler das Programm compiliert ohne Fehler zu finden.
    Kann mir einer einen Tip geben oder sogar einen Quelltextauszug posten?
    Das wäre echt ganz toll.



  • Hallo

    Wenn du wirklich den inhalt des AnsiStrings in ein C-Array kopieren willst must du die C-Funktion strncpy und die AnsiString-Methode c_str() einsetzen.
    Aber du solltest dich fragen ob du das C-Array wirklich brauchst, denn meistens, grade für Übergaben als Parameter der Form const char*, reicht auch c_str() alleine aus.

    bis bald
    akari



  • Danke schön. Das ist ein tolles Forum. Sonst bekomme ich nie so schnell eine Antwort.



  • Noch der Hinweis darauf, dass AnsiStrings, abweichend vom üblichen C++-Array-Standard, erst bei Index 1 beginnen.


Anmelden zum Antworten