FormatFloat und Dezimalpunkt warum geht das bei mir nicht?
-
Hallo,
ich wollte das Beispiel aus der FAQ ausprobieren,
aber leider will es bei mir nicht laufen.Was mache ich falsch?
#include <sysutils.hpp> DecimalSeparator = '.'; // hier kommt die Fehlermeldung [bcc32 Fehler] Unit1.cpp(13): E2303 Typname erwartet Application->UpdateFormatSettings = false;
viele grüße Karl
-
Die beiden letzten Zeilen müssen selbstverständlich in eine Funktion rein, am besten in die WinMain (in deiner <project>.cpp) oder main (bei einem Konsolenprogramm).
-
Hallo,
meinst Du so?
geht bei mir nicht.#pragma hdrstop #pragma argsused #ifdef _WIN32 #include <tchar.h> #include <iostream.h> #include <sysutils.hpp> #else typedef char _TCHAR; #define _tmain main #endif #include <stdio.h> int _tmain(int argc, _TCHAR* argv[]) { float a=1.2345; DecimalSeparator = '.'; //[bcc32 Fehler] punkt.cpp(21): E2451 Undefiniertes Symbol 'DecimalSeparator' cout << a; return 0; }
wo ist mein Denkfehler, ich komm nicht drauf.
viele Grüße Karl
-
Ist das Symbol
_WIN32
definiert? Nur dann wird nämlichSysUtils.hpp
inkludiert, in demDecimalSeparator
definiert ist.Außerdem:
iostream.h
undstdio.h
sind C-Header, in C++ benutzt maniostream
undcstdio
(ohne .h).
-
Hallo,
ich komm nicht weiter,
#pragma hdrstop #pragma argsused #ifdef _WIN32 #include <tchar.h> #else typedef char _TCHAR; #define _tmain main #endif #include <cstdio> #include <iostream> #include <sysutils.hpp> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { float a=1.2345; DecimalSeparator = '.'; //[bcc32 Fehler] punkt.cpp(21): E2451 Undefiniertes Symbol 'DecimalSeparator' cout << a; return 0; }
in der Hilfe hab ich folgendes gefunden:
Globale Variablen
Veraltete globale Variablen wurden entfernt; verwenden Sie stattdessen FormatSettingsZwanzig globale Variablen aus System.SysUtils, die seit einigen Jahre veraltet waren,
wurden nun aus dem Produkt entfernt. Diese globalen Variablen betreffen in der Regel Datums-,
Uhrzeit- und Währungsformate (CurrencyString, LongTimeFormat, ShortMonthNames usw.).Instanzen dieser globalen Variablen in Ihrem Code führen jetzt zu folgendem Compiler-Fehler:
E2451 Undefiniertes Symbol 'bezeichner' (C++)
E2003 Undeklarierter Bezeichner: '%s' (Delphi)
Es gibt zwei Lösungen für dieses Problem:Verwenden Sie die entsprechenden Felder der globalen Variable System.SysUtils.FormatSettings.
Wenn Sie in Ihrem Code beispielsweise System.SysUtils.NegCurrFormat verwendet haben, können
Sie dies durch Folgendes ersetzen:FormatSettings.NegCurrFormat
Erstellen Sie eine eigene TFormatSettings-Struktur, und rufen Sie die überladenen Funktionen
auf, die diese Struktur übernehmenLiegt hier irgendwo mein Fehler, und könnt ihr mir weiterhelfen?
vielen Dank
Karl
-
versuchs mal damit:
FormatSettings.DecimalSeparator =
-
j.halder schrieb:
versuchs mal damit:
FormatSettings.DecimalSeparator =
Hallo,
geht auch nicht: [ilink32 Fehler] Error: Nicht auflösbares externes 'System::Sysutils::FormatSettings' referenziert von C:....\PUNKT.OBJ
viele Grße karl
-
Na immerhin kompiliert es schon mal.
Du hast vermutlich ein "nacktes" Konsolen-Projekt erstellt, verwendest darin jetzt aber VCL-Klassen. Deswegen stolpert der der Linker nun über nicht eingebundene VCL-Bibliotheken.
Falls du wirklich mit der VCL arbeiten willst erstellst du dein Projekt am besten neu und achtest dabei darauf, die "Zielframework"-Option entsprechend zu setzen.
Wenn es ohne VCL sein soll dann dürfte die Win32-Funktion SetLocaleInfo weiterhelfen.
Hier ein Delphi-Beispiel: http://www.greatis.com/delphicb/tips/lib/system-setseparator.html
-
Jansen schrieb:
Na immerhin kompiliert es schon mal.
Du hast vermutlich ein "nacktes" Konsolen-Projekt erstellt, verwendest darin jetzt aber VCL-Klassen.Hallo,
zu Testzwecken hatte ich ein Konsolen Projekt erstellt.
Bei meiner VCL Anwendung läuft es jetzt auch mit FormatSettings.DecimalSeparator =hab den Tipp inzwischen auch im Forum gefunden. Nur eben nicht ein der FAQ.
vielen Dank für eure Hilfe
viele Grüße Karl