Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Заменя точки или запятой на DecimalSeparator


Автор: Нитонисе 25.5.2013, 20:08
Обрабатываю собтие OnKeyPress в поле Edit
Код

if (Key == ',' || Key == '.')
{
    Key = DecimalSeparator;
}

Компилятор ругается таким сообщением
Код

[BCC32 Fatal Error] UMain.cpp(279): F1004 Internal compiler error at 0x1dbe74f1 with base 0x1dbe0000

Автор: volatile 25.5.2013, 23:26
Цитата(Нитонисе @  25.5.2013,  20:08 Найти цитируемый пост)
Internal compiler error 

Это уже нельзя назвать 'Компилятор ругается'
Это он вываливаецца с ошибкой. Баг в компиляторе по любому.
Этого не должно быть никогда, в независимости от того что вы написали в коде.
Ищите апдейты, и проч, если оно есть...


Автор: Dem_max 26.5.2013, 06:04
Решение простое, закрываем проект, закрываем компилятор и запускаем компилятор заного, а потом по новому компилим, если не помогает(ну очень редкий сллучай) то нужно перегрузить ПК

Автор: Нитонисе 26.5.2013, 10:10
Цитата(Dem_max @  26.5.2013,  06:04 Найти цитируемый пост)
Решение простое, закрываем проект, закрываем компилятор и запускаем компилятор заного, а потом по новому компилим, если не помогает(ну очень редкий сллучай) то нужно перегрузить ПК

Действительно  smile 

Автор: Dem_max 26.5.2013, 14:21
Привыкай, иногда раза 3 на дню бывает такая хрень.

Автор: volatile 26.5.2013, 18:45
Цитата(Dem_max @  26.5.2013,  14:21 Найти цитируемый пост)
иногда раза 3 на дню бывает такая хрень

мда уж. и как у вас нервы выдерживают?

В 8-ой студии до 1-го апдейта было иногда такое, после установки обновления проблема исчезла.


Автор: Нитонисе 26.5.2013, 19:34
Цитата(Dem_max @  26.5.2013,  14:21 Найти цитируемый пост)
Привыкай, иногда раза 3 на дню бывает такая хрень.

Все таки есть какая-то странность. Вот опять на DecimalSeparator начались проблемы. Я их решил тем, что обработчик нажатия клавиши сделал отдельной функцией, не являющейся членом класса формы. И при нажатии клавиши просто эту функцию вызываю. Там DecimalSeparator принимается нормально.

Автор: Нитонисе 11.10.2013, 21:38
Сменил студию XE на XE4 - появилась проблема с DecimalSeparator. Код, который работал в XE - в XE4 не хочет компилироваться. Ошибка вот такая:

Код

[bcc32 Error] Functions.cpp(82): E2451 Undefined symbol 'DecimalSeparator'


Префикс должен какой-то спереди стоять чтоли. Я так понимаю можно создать структуру TFormatSettings у которой есть поле DecimalSeparator. Назначить нужный разделитель - и вперед. Но мне такой подход не нравится. Хочу использовать системный разделитель. Как взять это значение?

Автор: Нитонисе 12.10.2013, 10:37
Вопрос решил вот так.
Код

TFormatSettings fs;
GetLocaleFormatSettings(0,fs);
Key = fs.DecimalSeparator;

Автор: C4EBA 20.2.2014, 16:55
В Дельфи, при переходе на поздние версии, когда компилятор стал ругаться на 
DecimalSeparator := '.'; 
проблему решила замена на 
FormatSettings.DecimalSeparator := '.';
Может, и в Билдере аналогичная замена выручит? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)