Zahlen auslesen, addieren, ausgeben

System_Shutdown

Grünschnabel
Guten Abend ..

es geht um win 32 API ..

Folgendes Problem:

Ich lasse in zwei EDIT-Boxen Zahlen eingeben und einlesen.
dann habe ich darunter einen Button, der bei klick in einer MessageBox das Additionsergebniss der beiden Zahlen ausgeben soll ..

jedoch habe ich das Problem, dass bei der MessageBox in den Parametern eine const char* variable oder ein text angegeben werden muss ..

demzufolge gibt mir der compiler einen invalid conversion from int to const char* -error aus.

danke für jede Hilfe!
 
hm ..

ich kriege aber leider noch bei:

Code:
                  int xl = GetWindowTextLength(textbox);
                  char Zahl1[xl];
                  GetWindowText(textbox, Zahl1,xl+1);
                  
                  int yl = GetWindowTextLength(Itextbox);
                  char Zahl2[yl];
                  GetWindowText(Itextbox ,Zahl2,xl+1);
                  
                  char x[128];
                  sprintf(x,"%d", Zahl1 + Zahl2 );
                  
                  MessageBox(NULL, x, "Inhalt", MB_OK);

einen Fehler -.-

( invalid operands of types `char[((unsigned int)((int)xl))]' and `char[((unsigned int)((int)yl))]' to binary `operator+' )
 
das ganze in eine schleife packen...

edit: Jetzt wo dus sagst, Endurion, fällt mir auch gerade auf, was das für ein Kauderwelsch ist :(
War wohl noch zu müde....
 
Zuletzt bearbeitet:
Himmel Kreuz!

Du musst beim Programmieren in C/C++ klar unterscheiden, welche Variablentypen du hast. Du hast die Zahlen in zwei Strings (hier leider char-Arrays).

Strings sind zuallererst Texte. In deinem Fall stellen die Texte Zahlen dar, es sind aber trotzdem Texte. Mit Texten kann man nicht rechnen.

Rechnen kannst du nur mit Zahlentypen, int oder float oder double (usw.). Daher musst du zunächst die Texte in Zahlen umwandeln:

char Zahl1[200];

GetWindowText( textbox, Zahl1, sizeof( Zahl1 ) );

// in eine Zahl umwandeln
int Zahl1Int = atoi( Zahl1 );


Das Gleiche mit Zahl 2. Dann kannst du die Zahlen aufaddieren und wieder in einen Text packen, wie du es bereits vorgesehen hast:

char x[128];
sprintf( x, "%d", Zahl1Int + Zahl2Int );

MessageBox( NULL, x, "Inhalt", MB_OK );
 
asoow ..

ja genau das war mein Problem dass ich nämlich chars hatte und nich wusste wie man die zu int converten kann ..

habs zuerst mit static_cast probiert aber das geht ja nicht ..

okay danke für die Antwort ^^ ..
 
Als Tip: Wenn du casten must (welchen von den hässlichen c++-casts auch immer), und du nicht genau weisst, weshalb du castest, dann ist es ziemlich sicher nicht richtig.
 
Zurück