Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Zahlenformat auf der aktuellen Maschine (Rechner) !!!???

taz78 / 3 Antworten / Flachansicht Nickles

huhu,


folgendes Problem, ein Programm besteht bereits und kann bestimmte daten aus einer db auslesen. diese haben ein spezielles format, und zwar mit einem dezimalkomma. diese daten sollen jedoch an ein anderes programm (matlab) zur analyse übergeben werden, welches nur mit dezimalpunkt arbeiten kann. nunja dies würde alles kein problem darstellen, wenn ich wüsste, dass alle anwender dieses programmes ebenfalls ein dezimalkomma benutzen, denn dann würde ich die daten einfach immer automatisch konvertieren lassen und mein problem wäre erledigt. so einfach ist es aber nicht, da es durchaus anwenderumgebungen geben kann, die eben einen dezimalpunkt benutzen.


nun meine eigentliche frage, ich benötige erstens infos wie und wo ich die formateinstellung des ausführenden rechners ausfindig mache (bitte nicht antworten: "gehe doch einfach in die ländereinstellung!" - dies ist nicht das problem) zweitens wäre es top, wenn mir jmd sogar sagen könnte, wie ich es genau umsetzen kann, ein kleines programmbeispiel in C, C++ oder Delphi wäre sehr hilfreich. es geht wohlgemerkt nur um die info welche einstellung gerade angewandt wird, um entscheiden zu können, ob die daten vor der weiterverwendung konvertiert werden müssen oder nicht.


vielen dank und vllt bis bald


torsten

bei Antwort benachrichtigen
Metzelmaschine taz78 „Zahlenformat auf der aktuellen Maschine (Rechner) !!!???“
Optionen

Ich könnte Dir noch folgendes anbieten:
Registrierungsschlüssel HKEY_CURRENT_USER\Control Panel\International
auslesen, Wert von sDecimal ermitteln und zurückgeben:

bool IstKomma ()
{
HKEY hKey;
char temp[99] = {""}; // 99 !?.. naja, sicher ist sicher *g*
unsigned long size = sizeof(temp);

RegOpenKeyEx(
HKEY_CURRENT_USER,
"Control Panel\\International",
0,
KEY_READ,
&hKey
);

RegQueryValueEx(hKey, "sDecimal", NULL, NULL, temp, &size);
RegCloseKey(hKey);

if(hKey==",") return TRUE;
esle return FALSE;
}

...okay, vielleicht noch nicht ganz sauber, hab's auch nicht getestet, aber Prinzipiell dürfte das so klappen! "If IstKomma==TRUE", da ist doch auch ordentlich mit zu arbeiten, oder!?? ...viel Glück; und geb' mal Rückmeldung!

bei Antwort benachrichtigen