Typenumwandlung in einer Windowsanwendung

KILLSMAKER

Erfahrenes Mitglied
programm:Visual C++.net v.2003

moin.
Ich habe mal ein einfaches Textverschlüsselungsprogramm geschrieben, aber jetzt hab ich da ein Problem: Wie kann man in einer Windowsanwendung eine Typenumwandlung von
einem TCHAR-Array zu einem INT-Array vornehmen?

DANKE
 
Was willst du denn mit dem Array machen?

Im Prinzip kannst du das bei einer Übergabe brutal auf ein int-Array casten. TCHAR und int sind ja in jedem Fall unterschiedlich gross.

Wenn du das TCHAR-Array in ein int-Array übertragen willst, würde ich memcpy verwenden.

In beiden Fällen entspricht ein TCHAR-Array-Eintrag aber NICHT einem int-Array-Eintrag.

Wenn du das willst, musst du die TCHARs einzeln in das int-Array übertragen.
 
ok. danke schon mal.

mit einzeln übertragen meinst du z.B. meinintarray[1]=meintchararray[1]; oder?
wenn ja , das funktioniert bei mir irgendwie nicht. Ich habe versucht mein meintchararray ,wie oben beschrieben, in meinintarray zu kopieren, nachdem ich ein paar Zahlen mittels GetWindowText in meintchararray geladen hatte. Weiß einer wieso das nicht funktioniert


danke
 
Also da brauchen wir mehr Informationen: Wozu dient das Int-Array? Soll es irgendwo übergeben werden (dem Verschlüssel-Algorithmus?).

Zeig mal den Code-Schnipsel.
 
moin.
also das wäre die Stelle:

CODE =GetDlgItem (hDlg,EDIT2);
GetWindowText(CODE,mychar,1000);
len=strlen(mychar);
for(int z=1;z<=len;z++)
{
myint[z]=mychar[z];
}


counter=1;
for(int r=1;r<=leni;r=r+4)
{
myint[r]=myint[r]*1000;
myint[r+1]=myint[r+1]*100;
myint[r+2]=myint[r+2]*10;
myint[r+3]=myint[r+3]*1;
dum=myint[r]+myint[r+1]+myint[r+2]+myint[r+3];
if(counter==1)
{
counter2=1;
}
else
{
counter2=counter-1;
}
if(r!=1)
{
dum=dum/counter;
dum=dum/counter2;
}

switch (dum)
{
case 27: wsprintf(wt,TEXT("a"));// wt= wieder Text
break;
case 26: wsprintf(wt,TEXT("b"));
break;
case 25: wsprintf(wt,TEXT("c"));
break;
.
.
.
.


ich erkläre noch mal kurz das System: zum verschlüsseln nehme ich 3 Zahlen.
1. die eigene Stelle
2. die vorige Stelle
3. die Zahl für den jeweiligen Buchstaben
oben ist nicht der Verschlüüselungscode selbst. Sondern der,um es wieder zu normalen Text zu machen.
mit GetWindowText bekommt man eine Zahl, wie z.B. 0015003000900180 ( für "moin")
Die Zahl möchte ich dann in myint packen,nur bei mir funktioniert es nicht
Das m von moin ist hier also 0015. Deshalb auch
myint[r]=myint[r]*1000;
myint[r+1]=myint[r+1]*100;
myint[r+2]=myint[r+2]*10;
myint[r+3]=myint[r+3]*1;
dum=myint[r]+myint[r+1]+myint[r+2]+myint[r+3];
(ich weiß dum ist ein dummer Variablenname,:-))
ich hoffe jetzt ist alles klar.

danke
 
Was ich sehe, ist, dass die Zuweisungsschleife bei 1 anfängt und bis Länge geht, statt von 0 bis Länge - 1 (von Pascal her?)

Ändere:

for(int z=1;z<=len;z++)

in:

for(int z=0;z<len;z++)


Ausserdem möchtest du im Int-Array den Wert als Zahl, während er im char-Array als Zeichen steht:

Ändere:

myint[z]=mychar[z];

in

myint[z]= mychar[z] - '0';

Hintergrund: Eine Ziffer im Text hat einen anderen Wert als die eigentliche Ziffer. '0' entspricht in ASCII dem Wert 48, deshalb ziehe ich hier einfach '0' ab, um auf den tatsächlich dargestellten Wert zu kommen.
Achtung: Das klappt natürlich nur dann, wenn da auch nur Zahlen drinstehen.
 
Da hab ich was, Herr Kuse :)

Gibt's auch ein Simpel-Code-Tag für maximal Zweizeiler? Da ist die Codebox etwas zu gross für.
 
Zurück