CString in unsigned char[1024] konvertieren?
-
ich versuch das mal.. danke
-
Also ich habe mir folgendes zurechtgeschustert:
CString sMyString = "Something"; unsigned char szTest[1024]; int j = 0; for (j = 0; ((j< sMyString.GetLength()) && (j<1023));j++) { szTest[j] = sMyString.GetAt(j); } szTest[j] = '\0';
Aber das Programm schmiert mir dadurch an anderer Stelle weg.
Was mache ich falsch, bzw. was habe ich nicht berücksichtigt?
-
Little_Bird schrieb:
Also ich habe mir folgendes zurechtgeschustert:
CString sMyString = "Something"; unsigned char szTest[1024]; int j = 0; for (j = 0; ((j< sMyString.GetLength()) && (j<1023));j++) { szTest[j] = sMyString.GetAt(j); } szTest[j] = '\0';
Aber das Programm schmiert mir dadurch an anderer Stelle weg.
Was mache ich falsch, bzw. was habe ich nicht berücksichtigt?Also dieses Codefragment funktinoiert ja.
Greiffst du vielleicht auf szTest zu, obwohl diese noicht, oder nicht mehr initialisiert ist? Beachte immer die Gültigkeit von lokalen Variablen.
-
Bist du sicher, das die Funktion an die du übergibst auch nur bis zum '\0' (Stringende) liesst? Vielleicht sollteste das Array vorher mal komplett initialisieren, vielleicht bringt's ja was..
-
Little_Bird schrieb:
Also ich habe mir folgendes zurechtgeschustert:
CString sMyString = "Something"; unsigned char szTest[1024]; int j = 0; for (j = 0; ((j< sMyString.GetLength()) && (j<1023));j++) { szTest[j] = sMyString.GetAt(j); } szTest[j] = '\0';
Aber das Programm schmiert mir dadurch an anderer Stelle weg.
Was mache ich falsch, bzw. was habe ich nicht berücksichtigt?Viel zu umständlich. Wie wäre es mit einem einfachen
CString foo = "bla bla bla"; char bar[1024]; strcpy(bar, foo)
(CString hat einen Cast nach const char* eingebaut)
-
ist schon mal jemandem der Unterschied zwischen signed char und unsigned char aufgefallen?
LittleBird's Codeschnipsel selbst ist es nicht (und funktioniert auch noch ein bißchen unter UNICODE).
sky21: denk' ich auch
-
Jo, char ist von -128 bis +127 und unsigned char von 0 bis 255, entsprechend dem ASCI-Code, oder nicht?
und die konvertierung, bzw Benutzung eines CStrings als char, bzw char* (kann man ja dereferenzieren) hatte ich schon im zweiten Posting genannt, was natürlich zugegebernermaßen irgendwie nicht so sinnvoll war *g*.
Da die Konvertierung von sky21 aber funktioniert (habs grad zu sicherheit nochmal getestet) liegt der Fehler wo anders..
-
ist schon mal jemandem der Unterschied zwischen signed char und unsigned char aufgefallen?
LittleBird's Codeschnipsel selbst ist es nicht (und funktioniert auch noch ein bißchen unter UNICODE).
Was meinst du damit?
Also mein Codeschnipsel funktioniert, der Absturz lag woanders dran. Ist mein Code falsch, oder nur umständlich?
-
CString foo = "bla bla bla";
char bar[1024];
strcpy(bar, foo);ist das eine konvertierung nach unsigned char??
-
strcpy arbeitet mit "char *", und für den ist signed/unsigned (glaub ich) compiler-spezifisch. Man könnte aber mit einem cast arbeiten:
CString foo = "bla bla bla"; unsigned char bar[1024]; strncpy( (char *)bar, foo, 1023); // sicher ist sicher :) bar[1023]=0;
Deine Schleife hat den Vorteil daß sie auch für Unicode-Strings fuunktioniert, sofern diese keine Unicode-Zeichen enthalten.