точка, или запятая?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

точка, или запятая?

Сообщение d3drm » 22.12.2006 (Пт) 19:11

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

Программа принимает числовые данные с текст бокса, который имеет формат "0,00" (все дело в запятой), то есть если ввести 0.00, то при попоытке перевести все это в числовые данные (черех cSng() ), появится ошибка.

Про форматы чисел и дат мы знаем, что они-то в разных странах по разному записываются - у кого запятая, у кого точка. Как бы не проблема, взять, да тупо заменить перед форматированием точки на зяпятые, и все нормально будет...

А что, если программа будет работать на компьютере за грацицей, где как раз нужна точка-разделитель, в то время, как моя программа использует запятую?

Возможно ли такое? Или моя скомпилированная программа будет использовать формат один данных на ВСЕХ машинах? И если нет, то как лечить?
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.12.2006 (Пт) 19:18

d3drm давно не кодил :D

CSng использует текущий национальный разделитель, и больше ничего не требуется.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 22.12.2006 (Пт) 20:15

GSerg писал(а):d3drm давно не кодил :D

:D

GSerg писал(а):CSng использует текущий национальный разделитель, и больше ничего не требуется.


Ну а вот мне хочется, чтобы моя программа воспринимала и точку и запятую как разделитель :) Как мне узнать в какой формат переводить данные перед функцией cSng, чтобы не было ошибок? по сути, получается, как узнать этот самый "текущий национальный разделитель?"
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.12.2006 (Пт) 20:22

Несмотря на то, что узнать его очень просто, я не буду тебе говорить, как, поскольку тогда ты напишешь программу неправильно :)

Правильно - это выполнить CSng, и если оно прокатило, то дальше, а если нет, то сказать пользователю, что вводит не то.

d3drm смишной (c) d3drm :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 22.12.2006 (Пт) 20:39

GSerg, не понимаю, к чему все эти подколки )))

В программах-аналогах в текстбоксах используются точки, вполне разумно что я хочу использовать точку как разделитель чтобы пользователь не переучался и чтобы ему было удобно. А ты, Серега, заставляешь делать неудобно пользователю, это плохо =)
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.12.2006 (Пт) 20:43

Если ты хочешь фиксированную только точку, то и юзай val вместо csng и не морочь людям голову :)
А если ты хочешь интеграцию в мировую экономику и покорение глобального рынка, то перехват ошибки при вызове csng - то, что приведёт тебя к успеху :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 22.12.2006 (Пт) 20:47

подменяй . на ,

Код: Выделить всё
tmp = "0.00"
Mid(tmp, InStr(tmp, "."), 1) = ","
Text1 = Format(tmp, "### ##0.00 грн.")

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 22.12.2006 (Пт) 20:52

GSerg, ладно-ладно, чувствую, виноват... Ну забыл я про существование VAL, никогда им не пользовался =) Но по сути это то, что мне нужно ;)


Ну наверно тема закрыта =)
ХЎ

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 22.12.2006 (Пт) 21:24

Нет!
В SP1 при записи Output перед и в конце файла жобавлялась ", а в SP2 - нет!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 22.12.2006 (Пт) 22:00

d3drm писал(а):GSerg, не понимаю, к чему все эти подколки )))


Узнать десятичный разделитель: Format$(0,".")

Заменять автоматом вполне можно (если это не разделитель разрядов). Я так и делаю... По крайней мере хуже от этого ни разу не было...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

    TopList