Wie kann ich eine Zeichenfolge ausgeben

Myth

Grünschnabel
Hi,

ich programmiere seit ca. 1-2 Jahren in C++.Jetzt habe ich ein Problem und finde auch im Net keine gescheite Antwort.Vorweg:ich nutze die dialogbasierte MFC Anwendung.Desweiteren möchte ich anmerken,das es sich hierbei um ein Tool meines Freundes handelt.Wer mir nicht glaubt dem kann ich es zusenden.BITTE HELFT MIR:

Problemstellung:
Das Programm liest in einem EditField den eingegebenen Namen von dem User ein.Dieser wird dann Buchstabe für Buchstabe umgewandelt in die Zahl,die für den Buchstaben im Alphabet steht.Ist der Buchstabe größer als 10 oder 20 wird jeweils 10 oder 20 abgezogen,da nur die Einerstellen bearbeitet werden.

Beispiel zur Verdeutlichung:

Name:Boza
B=2 (Alphabet 2.Stelle)
o=15. Stelle -10 (da nur Einer genutzt werden) =5
z=26.Stelle -20 =6
a=1.Stelle=1

Boza=2561

Ich habe das ganze umwandeln der Buchstaben über die Asciizeichen realisiert und -96 gerechnet,da das kleine a 97 ist.Für die Großbuchstaben ist auch schon alles geklärt.


Nun das Problem:
Ich möchte diese Umwandlung in einer double Variable speichern damit ich via UpdateData(FALSE) diese Reihenfolge in einem anderen Feld stehen habe.
Wie ist es möglich die Zeichen nacheinandern dort auszugeben ohne das ich weiss,wieviele es sind?Mit einer for Schleife oder?


BITTE HELFT MIR-DAS IST EIN BESCH*SSENES PROBLEM.
 
Ich verstehe dein Problem ehrlichgesagt nicht. Du hast es doch schon geschafft, die Zeichen umzuwandeln, dann weißt du doch wie du an die Länge des Strings kommst. In double wandelst du einen String mit atof um. (Ne Frage: Soll das eigentlich sowas wie eine Verschlüsselung werden? Wird nämlich dann nicht funktionieren, weil es keine eindeutige Abbildung ist.)
 
Heut Abend kommt der Source

Selbst wenn ich es umwandele kann er die zahlen nicht hintereinander ausgeben ohne mathematische Berechnuung oder?
Ich sende heute Abend den Source und eine kürzere Erklärung,dann wird alles verständlicher(denke ich).
 
Der SOURCE
Code:
/*m_name=Name des Users,die einzelnen Buchstaben werden in ASCII umger.
m_serial=EditField indem die Zahlenfolge ausgegeben werden soll*/

/*die Variablen sind im MFC Klassenassisten deklariert)
m_name=Typ CString
m_serial=Typ double*/


                     for(int i=0;i<strlen(m_name);i++){		
		

                   	                      if((int)m_name[i]>96){
	                      m_serial=(int)m_name[i]-96;
	                     } 

		else{
			double g,f,p;
			g=(int)m_name[i]-96;
			g=g/(-1);
			f=96-g;
			p=f+32;
			m_serial=p-96;
		}

		if(m_serial>10 && m_serial<20){
			m_serial=m_serial-10;
		}

		if(m_serial>10 && m_serial>20){
			m_serial=m_serial-20;
		}

/*bis hierhin ist alles klar-das ist die Umrechnung-
jetzt sollen die Zahlen nacheinander an m_serial(Typ double)
übergeben werden!Wie geht das?Kann mir jemand bitte nen Source
posten-kann auch seine eigenen Variablen verwenden*/


}
 
Also mein Ansatz wäre:
Code:
m_serial = 0;
for (int i = 0; i < m_name.GetLength(); i++)
{
  char temp;
  if (m_name[i] > 96)
  {
    temp = m_name[i]-96;
  }
  else
  {
    temp = m_name[i]-64;
  }

  //Der Rest einer Teilung durch 10 ist immer die Einerstelle, also:
  temp = temp%10;

  //wenn du noch die Stellen einzeln ausgeben möchtest, dann gib den Wert
  // von temp an dieser Stelle aus

  m_serial = m_serial*10 + temp;
}
Dein Ergebnis steckt jetzt in m_serial.

Code:
double g,f,p;
g=(int)m_name[i]-96;
g=g/(-1);
f=96-g;
p=f+32;
m_serial=p-96;
Ich geh mal davon aus, dass das so eine Art Kopierschutz darstellen soll. Sowas ist aber viel effizienter, wenn du unzählige Funktionsaufrufe und Bedingungen schreibst (viele call und jmp Anweisungen verwirren, wenn man versucht etwas zu disassemblieren).
 
WOW BIG THX

Wow Dudadida your really great.That's it.
Vielen Dank für deine Hilfe-ich hab schon alles mögliche bei google eingegeben aber solche kompetenten Antworten findet man einfach nicht :)
Danke nochmals,es funktioniert alles hervorragend und desweiteren nehme ich mir deine Tipps zu Rate.
 
Zurück