Int -> Char* nicht möglich
-
Hi ihr!
Ich habe mir ne Funktion zusammengestellt, mit der ich einen String mit Hilfe eines Vergleichsworts in ASCII verschlüsseln kann. Das Problem ist jetzt, das ich die "itoa" - Funktion nicht so ganz verwenden kann, könnte mir da mal jemand auf die Sprünge helfen??
Hier die Funktion:
String CryptPassword(String pwd) { String t_c ="InventVerw", encode ="", t_asc1, t_asc2, save_substr, save_substr2; char *akt_char, *akt_char2, *saved_char, *saved_char2, *saved_encode; int i, t_save, t_save2, t_e; for (i=1; i<pwd.Length(); i++) { //Übergebenes Passwort zerlegen save_substr = pwd.SubString(i,1); save_substr2 = t_c.SubString(i,1); //char - wert des Zeichens bilden akt_char = save_substr.c_str(); akt_char2 = save_substr2.c_str(); //char - wert in ASCII Code übersetzen t_asc1 = IntToStr(*akt_char); t_asc2 = IntToStr(*akt_char2); if (t_asc1 > t_asc2) { t_e = (t_asc1-t_asc2)*2; if (t_e > 127) { t_e = 76; } } else if (t_asc1 < t_asc2) { t_e = (t_asc2 - t_asc1)*3; if (t_e > 127) { t_e = 34; } } else if (t_asc1 == t_asc2) { t_e = 68; } encode = encode + itoa(t_e, *saved_char, 16); //<----- Hier kommt der Fehler } return encode; }
Meldung im Compilerfenster:
[C++ Fehler] main.cpp(53): E2034 Konvertierung von 'int' nach 'char *' nicht möglich [C++ Fehler] main.cpp(53): E2342 Keine Übereinstimmung des Typs beim Parameter '__string' ('char *' erwartet, 'char' erhalten)
Gruß,
-
Ich glaube es wird ein array und kein pointer auf ein array erwartet.
Gruß Skay
-
Sollte ich da jetzt ein Array erstellen, das den ganzen ASCII Code enthält??? Das wär doch einwenig zuviel des Guten
Oder??
-
Da sind gleich zwei Fehler drin:
1. für saved_char wird kein Speicher reserviert
2. Du mußt in itoa einen Pointer verwendenstatt:
char *saved_char; ... encode = encode + itoa(t_e, *saved_char, 16); //<----- Hier kommt der Fehler
besser:
char saved_char[33]; ... itoa(t_e, saved_char, 16); encode = encode + saved_char;
-
Klasse Geo
Funzt prima. ___Und wieder ist man etwas schlauer geworden.