|
локальные настройки языка
|
|||
---|---|---|---|
#18+
Всем добрый день! Есть ПБ10.5. имею строку текста, содержащее число. формат неизвестен, разделитель между целой и дробной частью - тоже(из Эксель-русской или английской версии). Хочу знать, как на клиентской машине определить "правильный формат" числа из настроек ОС. ясно - для того, чтобы переформатировать строку с числом в правильный вид и преобразовать во внутренний формат. Нигде не видел программ связи с национальной поддержкой языков(в ПБ). Хотя бы где копать! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2015, 11:54 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
21.08.2015 11:54, sboyko пишет: > имею строку текста, содержащее число. формат неизвестен, разделитель > между целой и дробной частью - тоже(из Эксель-русской или английской > версии). > Хочу знать, как на клиентской машине определить "правильный формат" Перечитал 3 раза, ничего не понял :). Что такое правильный формат? Если что, Decimal Separator и т.п. можно получить с помощью GetLocaleInfo(). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2015, 13:35 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
Еще простой метод Код: sql 1. 2. 3. 4.
Но это только то, что касается децимального разделителя. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2015, 09:33 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
Немножко ошибся:) Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2015, 09:34 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
spas2001, у меня string(1.1) сразу дает ошибку. я и пытался решить задачу таким способом. а вот string(1,1) работает прекрасно хотя ОС английская. точно также isnumber(1,1) прекрасно понимает - хотя вроде не должна. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2015, 13:39 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
Dim2000, а я 3 раза переписывал чтобы было понятно - так стараться и все же не понятно. под правильным я понимаю набор символом в строке после которого преобразователь типа DEC(string) ГАРАНТИРОВАННО не даст ошибку. обычно мы над этим и не думаем - все делает ДВ и editmask. а тут пришлось обрабатывать строки экселя и возникла трудность с которой я давно не встречался. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2015, 13:44 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
Dim2000, а у меня в ПБ105 нет такой функции. :-( . или это виндовая функция? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2015, 13:48 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
sboyko " у меня string(1.1) сразу дает ошибку. ..." это, простите, как? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2015, 15:47 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
Raven A, при трансляции ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2015, 12:48 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
прошу прощения - нечистый попутал. ls="1.1" isnumber(ls) - дает false, ls="1,1" isnumber(ls) - дает true isnumber("1,1")-дает true string(1.1) - все нормально string(1,1) - ошибка трансляции ld = 1.1 - все нормально ld = 1,1 - ошибка трансляции ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2015, 13:20 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
sboyko, Вы уж больше не пугайте так, а то я было подумал, что грибочки в супе у меня были не те :) К сожалению, вашу постановку задачи я то-же не понял, туплю наверное. Если вопрос о определении десятичного разделителя, УСТАНОВЛЕННОГО в ОС, то spas2001 дал Вам один из самых простых способов его определения, да и Вы сами уже нашли свой вариант: Код: vbnet 1. 2. 3. 4. 5.
Компилятор всегда в качестве разделителя в явно заданных числовых значениях/constant использует точку. Разделитель, установленный в региональных настройках, используется только при преобразованиях string => numeric при вводе информации (например при вводе в поле DW) и некоторых функциях ( f.e. IsNumber(S) ) По задаче: если формат входных данных не определён, "гарантированно" преобразовать строку в числа весьма "интересная" задачка. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2015, 21:27 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
Raven A, Про грибочки - виноват. По задаче: если формат входных данных не определён, "гарантированно" преобразовать строку в числа весьма "интересная" задачка. Но ведь надо! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2015, 18:33 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
Raven A, что меня неприятно удивило - 1.1 - внутренний формат числа - НО- isnumber с этим не согласен. ему нравится 1,1 есть мысль - а не связано это с тем что при работе используется русская раскладка? может в английской раскладке isnumber и 1.1 понравится... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2015, 18:38 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
decimal lc_ret string ls_sep, ls_wrong_sep RegistryGet("HKEY_CURRENT_USER\Control Panel\International","sDecimal", RegString!, ls_sep) choose case ls_sep case "," ls_wrong_sep = "." case "." ls_wrong_sep = "," case else ls_sep = "," ls_wrong_sep = "." end choose if isnull(as_dec) or trim(as_dec) = "" or trim(as_dec) = "0" then return 0 int li_pos li_pos = pos(as_dec,ls_wrong_sep,1) if li_pos > 0 then as_dec = replace(as_dec, li_pos, 1, ls_sep) lc_ret = dec(as_dec) return lc_ret else return dec(as_dec) end if return 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2015, 19:39 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
PS: string as_dec - аргумент функції, ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2015, 19:49 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
22.08.2015 13:48, sboyko пишет: > а у меня в ПБ105 нет такой функции. :-( . или это виндовая функция? Это WinAPI. MSDN в помощь :). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2015, 23:41 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
sboyko, Грибочки соберём новые :) >"... что меня неприятно удивило - 1.1 - внутренний формат числа - НО- isnumber с этим не согласен. ему нравится 1,1 " Для компилятора, вне зависимости от установленного в системе разделителя Код: vbnet 1. 2. 3.
Разделител, установленный в системе используется при преобразовании, явном или нет. Если у Вас, как мне кажется, разделителем является <запятая> , то верно следующее утверждение Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2015, 02:25 |
|
локальные настройки языка
|
|||
---|---|---|---|
#18+
Dim200022.08.2015 13:48, sboyko пишет: > а у меня в ПБ105 нет такой функции. :-( . или это виндовая функция? Это WinAPI. MSDN в помощь :). спасибо конечно, НО Микрософт так часто меняет все в разных версиях винды, что не хочется напрямую обращаться Винапи. у меня должно все работать от WinXP до Win8.1 и разной разрядности процессора. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 14:25 |
|
|
start [/forum/topic.php?fid=15&msg=39034529&tid=1335244]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 304ms |
0 / 0 |