Как переключить разделитель целой и дробной части?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как переключить разделитель целой и дробной части?

Как переключить разделитель целой и дробной части?

Ответ
Поиск в этой теме
Непрочитано 14.11.2008, 15:31 #1
Как переключить разделитель целой и дробной части?
Baldares
 
Саратов
Регистрация: 17.10.2008
Сообщений: 426

Привет.

Зла нехватает, с этими бюррократами

Короче ставлю "," ручками в Языках и Стандартах Виндов. А с нумпада опять точка вводится, и не воспринимается как число.

Что за х?
Просмотров: 13902
 
Непрочитано 14.11.2008, 15:34
#2
Forrest_Gump

инженер-конструктор
 
Регистрация: 20.12.2007
Щелково МО
Сообщений: 7,469
<phrase 1=


переключитесь на русскую раскладку - будет Вам счастье.
Forrest_Gump вне форума  
 
Непрочитано 14.11.2008, 15:38
#3
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


а ты перезагрузился, после смены настроек?
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 14.11.2008, 15:46
#4
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от Forrest_Gump Посмотреть сообщение
переключитесь на русскую раскладку - будет Вам счастье.
Нуту щастья на земле (
Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
а ты перезагрузился, после смены настроек?
Нет )
Baldares вне форума  
 
Непрочитано 14.11.2008, 15:49
#5
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


бывает...
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 14.11.2008, 16:23
#6
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Елпанов Евгений, Вы еще не ушли. Я перегрузился. Не помогло.
Т.е. нет, разделитель теперь запятая, все путем, но.
Опишу ситуацию подробней: В VBA-шной форме есть TextBox для ввода массы. После ввода проверка на число - IsNumeric(TextBoxMassa).
Набираю число с нумпада. И ,собака, точку пишет. Ну а проверка по IsNumeric дает false.
Ну не принудительно же ставить запятую.

Причем это только на моем компе задрипанном замечается.
У других запятая вводится с нумпада.

У меня AMD Athlon 1100. У остальны Пеньки III и IV.
Может в этом дело?
Baldares вне форума  
 
Непрочитано 14.11.2008, 16:25
#7
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


посмотри настройки в мс. оффисе...
может оттуда цепляется?
Елпанов Евгений вне форума  
 
Непрочитано 14.11.2008, 16:26
#8
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Хотя, начинается гадание на кофейной гуще - точного рецепта нету.
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 14.11.2008, 16:41
#9
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
посмотри настройки в мс. оффисе...
может оттуда цепляется?
Где посмотреть?
В екселе все пучком. Вводится зпт с нумпада.
Baldares вне форума  
 
Непрочитано 14.11.2008, 16:49
#10
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


а в панели управления, ты где менял?
разделитель целой и дробной части в разделе числа или в разделе денежная единица?
Кстати, чтоб лучше медитировалось, подскажи, какая у тебя винда, какой язык по умолчанию, сколько установлено языков и какие, какие права на компьютере.
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 14.11.2008, 17:06
#11
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
а в панели управления, ты где менял?
разделитель целой и дробной части в разделе числа или в разделе денежная единица?
В мс-Офисе я ниче не менял.
Менял как обычно Пуск-Панель управл. - Язык и Стандарты.
А в экселе просто в любую ячейку число с запятой вбивается с нумпада.
Эксперимент: 0,12 - Вот тут с нумпада "," )
А блин, у себя в проге - точка вылазиет (.
Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
Кстати, чтоб лучше медитировалось, подскажи, какая у тебя винда, какой язык по умолчанию, сколько установлено языков и какие, какие права на компьютере.
Не хило Вы медитируете. Щас соображу:
Windows XP Professional 2002, SP2.
Языки: англ и рус как у всех. Англ по умолчанию.
Права юзера, но с большими возможностями. В смысле у нас нет никаких запретов/ограничений (как например в комп.клубах).

И что тут можно раскурить?
Baldares вне форума  
 
Непрочитано 14.11.2008, 17:10
#12
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Baldares Посмотреть сообщение
Менял как обычно Пуск-Панель управл. - Язык и Стандарты.
посмотри, там есть закладки - числа и деньги..
Елпанов Евгений вне форума  
 
Непрочитано 14.11.2008, 17:12
#13
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


и еще, нет ли у тебя, клавиатурных перехватчиков? Может они шалят..
Елпанов Евгений вне форума  
 
Непрочитано 14.11.2008, 17:18
#14
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


еще одно видение (даже не знаю, как это по другому назвать, я даже не знаю, в каком городе ты живешь)...
Может у тебя все нормально?
Зайди в эксель, Сервис - Параметры - Международные и посмотри, стоит ли у тебя галка - использовать системные разделители...
Ну и само собой настройки разделителей в офисе...
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 14.11.2008, 17:23
#15
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Вот здесь зпт стоит.
Щас вторую картинку прикреплю про деньги)
Миниатюры
Нажмите на изображение для увеличения
Название: Числа.jpg
Просмотров: 190
Размер:	74.6 Кб
ID:	12252  
Baldares вне форума  
 
Автор темы   Непрочитано 14.11.2008, 17:24
#16
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Вот деньги
Оно?
Миниатюры
Нажмите на изображение для увеличения
Название: Деньги.jpg
Просмотров: 137
Размер:	66.9 Кб
ID:	12253  
Baldares вне форума  
 
Автор темы   Непрочитано 14.11.2008, 17:31
#17
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
и еще, нет ли у тебя, клавиатурных перехватчиков? Может они шалят..
У меня точно нет. А ваще хз.
Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
еще одно видение (даже не знаю, как это по другому назвать, я даже не знаю, в каком городе ты живешь)...
Может у тебя все нормально?
Зайди в эксель, Сервис - Параметры - Международные и посмотри, стоит ли у тебя галка - использовать системные разделители...
Ну и само собой настройки разделителей в офисе...
Местный я. С засранска-Саратова.
Чет в 2007 я не нашел (.
Миниатюры
Нажмите на изображение для увеличения
Название: Ексель_парам.jpg
Просмотров: 125
Размер:	50.2 Кб
ID:	12254  
Baldares вне форума  
 
Автор темы   Непрочитано 14.11.2008, 17:32
#18
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


А глобально объясни, при чем тут может быть мсОффис? Какая связь.
Говорю комп рухлядь, может поэтому.
Baldares вне форума  
 
Непрочитано 14.11.2008, 17:38
#19
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
А глобально объясни, при чем тут может быть мсОффис? Какая связь.
vba любит оттуда брать настройки..
А вообще, это шалит обработчик, те. подмена происходит либо во время проверки на число, либо самим контролом. Других предположений нету...
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 14.11.2008, 18:05
#20
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Елпанов Евгений, ну а чем может грозить принудительная замена точки на зпт менять.
Допустим так:
Код:
[Выделить все]
TextBoxMassa = Replace(TextBoxMassa, ".", ",")
Или лучше Chr использовать.

А и еще какой функцией переключается разделитель в WinAPI?
Или что-то типа Application.International(xlDecimalSeparator)
Baldares вне форума  
 
Непрочитано 14.11.2008, 23:51
#21
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Разделитель целой и дробной части хранится в реестре, насколько мне помнится.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.11.2008, 08:07
#22
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


В своей программе совсем не обязательно, чтобы автоматически учитывались региональные настройки. Это зависит от используемых компонентов и мозгов программиста. А с мозгами "в стране напряженка". Поэтому программисты часто уверены, что у всех DECIMAL_SEPARATOR должен быть установлен, как и у них.

В хороших программах это обязательно учитывается. В момент ввода данных и в моменты преобразования для вычислений и для вывода на экран. Хороший компонент также не даст ввести неправильный разделитель в момент ввода числа. Это у хорошего компонета "в мозги зашито".

Если нет хорошего компонента, должны включаться мозги программиста для вставки в обработчик событий дополнительного кода по преобразованию данных.

В реестр лазить не надо, необходимо обращаться к функциям API, так как место хранения сепаратора может изменяться.
ShaggyDoc вне форума  
 
Непрочитано 17.11.2008, 10:54
#23
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Думается мне, что дело тут не в мозгах, а всего лишь в отсутствии опыта.
А все, что подобает сделать опытному старшему товарищу - это привести короткий исчерпывающий пример кода, в котором грамотно "разруливается" подобная ситуация. Многим пригодилось бы (и мне в том числе).
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Непрочитано 17.11.2008, 11:32
#24
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Например, так (на Pascal):

Код:
[Выделить все]
 
function strUStofloat(value: string): double;
var
  OldSeparator: char;
begin
  result := 0;
  OldSeparator := DecimalSeparator;
  DecimalSeparator := '.';
  try
    result := StrToFloat(value);
  except
    //
  end;
  DecimalSeparator := OldSeparator;
end;
Здесь StrToFloat - штатная функция, которая "любит" разделитель, указанный в DecimalSeparator.

DecimalSeparator - глобальная переменная Windows. Она временно переопределяется на точку, получаем правильное число штатной функцией. Возможно и противоположное применение, например

Код:
[Выделить все]
 
function strRUStofloat(value: string): double;
var
  OldSeparator: char;
begin
  result := 0;
  OldSeparator := DecimalSeparator;
  DecimalSeparator := ',';
  try
    result := StrToFloat(value);
  except
    //
  end;
  DecimalSeparator := OldSeparator;
end;
А какую применять - зависит от используемых компонентов. Их можно настроить на разные DecimalSeparator. Причем лучше, если это будет именно "американская" точка, так как за много лет люди привыкли, что в большинстве программ надо именно точку вводить.

Для вывода данных на печать используются подобные функции, только заменяющие разделитель на нужный.

Хорошо, если в программе есть возможность для пользователя настроить, что использовать - "точку", "запятую" или "из региональных настроек".

Тогда в могло бы быть наподобие

Код:
[Выделить все]
 
function MyStrToFloat(value: string): double;
var
  OldSeparator: char;
begin
  result := 0;
  OldSeparator := DecimalSeparator;
  DecimalSeparator := MyDecimalSeparator();
  try
    result := StrToFloat(value);
  except
    //
  end;
  DecimalSeparator := OldSeparator;
end;
MyDecimalSeparator - функция, возвращающая из настроек программы разделитель.

В каждую программу это пихать не надо, это может быть в одном модуле, а в программе, вместо StrToFloat использовать MyStrToFloat.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 21.11.2008, 11:45
#25
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Невъехал как #24 применить в "гребаном" VBA.
Вот помогло это:
Замена точки или запятой в строке на разделитель установленный в реестре.
Код:
[Выделить все]
Public Function ReplaceDelimiter(InputStr As String) As String
   Dim WSHShell As Object
   Set WSHShell = CreateObject("WScript.Shell")
   InputStr = Replace(InputStr, ".", WSHShell.RegRead("HKEY_CURRENT_USER\Control Panel\International\sDecimal"))
   InputStr = Replace(InputStr, ",", WSHShell.RegRead("HKEY_CURRENT_USER\Control Panel\International\sDecimal"))
   ReplaceDelimiter = InputStr
End Function
Вредоносность оценить не могу.

Последний раз редактировалось Baldares, 21.11.2008 в 12:05.
Baldares вне форума  
 
Автор темы   Непрочитано 21.11.2008, 11:57
#26
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


Упс! А чето не найду сам References Windows Script Host Object Model. Ведь должон быть!?
Baldares вне форума  
 
Непрочитано 21.11.2008, 14:15
#27
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


У путёвого админа непременно стоит запрет на запуск Windows Script Host - распахнутых настежь ворот для атак на компьютер. Зачем из-за такой ерунды всё это запускать?

Одно из достоинств (самое большое) этого "гребаного" (по твоему выражению) в том, что из него можно вызывать функции обычных dll, в том числе WinAPI. Ну уж и реестр-то наверняка напрямую читать умеет, без всяких шеллов.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 21.11.2008, 15:03
#28
Baldares


 
Регистрация: 17.10.2008
Саратов
Сообщений: 426


ShaggyDoc, махнемся головами не глядя!
Baldares вне форума  
 
Непрочитано 21.11.2008, 15:54
#29
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Что умеет без Shell - это да. Но "напрямую" - это вряд ли
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как переключить разделитель целой и дробной части?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мониторы LCD CRT Разное 94 17.06.2008 10:51
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46
БРЕД СИВОЙ КОБЫЛЫ Kryaker Разное 1876 29.12.2006 23:41