short Variable

TheTank

Grünschnabel
Hallo

Es ist eine eigentlich einfache Frage:

in einer short Variable
Code:
short m_nBoxId
steht der Dezimalwert 1002d.
Dieser Werd wird dynamisch eingelesen ist also variabel. Ich möchte die einzelnen Stellen dieses Wertes in ein char[] schreiben.
In char soll dan stehen:
char[0] = 2
char[1] = 0
char[2] = 0
char[3] = 1

Das sollte aber Variabel sein! Also wenn sich der Wert der Variale m_nBoxId ändert sollen sich auch die Werte in char[] ändern!!

Bitte um rasche Hilfe
 
Hi.

Du könntest die sprintf Funktion dafür verwenden.

Aber automatisch geht das nicht. Du mußt schon selbst dafür sorgen falls sich der Wert ändert den Wert der Anzeige auch anzupassen. Stichwort: Observer Entwurfsmuster.

Gruß
 
hey,
du könntest dir aber auch eine einfache funktion schreiben, die das für dich gleichzeitig erledigt.
müsstest dann aber dafür sorgen das die variablen global definiert sind, oder die funktion innerhalb einer klasse liegt (wo sich dann auch die var. "short m_nBoxId" befindet).
beispiel (globale variablen):

Code:
#include <stdlib.h>
#include <iostream>

using namespace std;


short m_nBoxId;
char id[10];
char* pid = id;

void set_boxid(short value)
{
	m_nBoxId = value;
	itoa(value, pid, 10);
	// oder bei problemen:   _itoa(value, pid, 10);
}

int main()
{
	set_boxid(1024);
	cout<<"boxid (short): "<<m_nBoxId<<endl;
	cout<<"boxid (char) : "<<pid<<endl;
	// oder direkt das array ausgeben:   cout<<"boxid (char) : "<<id<<endl;

	cin.get();
	return 0;
}

die zahl steht zwar nicht in der reihenfolge die du vorgibst, jedoch macht es in der richtung mehr sinn...
die meisten funktionen (die strings konvertieren) würden deine anordnung der zahlen missverstehen.
wenn du dies trotzdem möchtest, dann leg dir ein temp array an und kopier dir die zahlen in eine spiegelverkehrte richtung :)

gruß
adam
 
Zuletzt bearbeitet:
Die Variablenbezeichnung deutet auf MFC hin, und da kann man nicht so einfach die Zuweisungsart von Variablen ändern.
Dürfte "so einfach" also nicht funktionieren
 
nun gut. von mfc hatte aber keiner was gesagt, sollte es mfc sein...müsste die funktion itoa() trotzdem funktionieren.
falls nicht, gibt es dann unter mfc eine andere lösung!
 
wenn es mfc sein sollte gibt es eine main funktion die immer in schleife läuft, in die eine check funktion einbauen.

sprich für die boxid noch eine old_boxid variable anlegen und dann immer schauen ob die noch gleich sind, falls nicht wird der wert kopiert und die "set_boxid() funktion" aufgerufen.
 
:rolleyes: Nur, dass man auf das WinMain und Nachrichtenhandler in der Regel keinen Zugriff hat...

Hier ist ein MFC-Projekt:
Das Eingabefeld liest ein int namens m_var1 ein; ein Klick auf Ausgabe gibt eine Messagebox mit dem Inhalt von text (char[128]) aus.

Würde mich interessieren, welche Schleife du änderst, damit die immer den gleichen Wert haben.
 
Zuletzt bearbeitet:
also die einfachste möglichkeit bei mfc, dem edit feld (short) eine OnEnChangeEdit funktion hinzufügen.
in dieser die konvertierung durchführen und dann char ausgeben (oder was auch immer).

war mit dem gedanken der schleife irgendwie zur win32 api abgedrifftet.
 
Zurück