Визуальная базовая ручка десятичной запятой - PullRequest
13 голосов
/ 02 июня 2011

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

При загрузке файлов «американские» десятичные дроби загружаются правильно и отображаются какЧешские десятичные дроби.В текстовых полях "чешские" десятичные дроби обязательны.Моя проблема в том, что программа генерирует чешские десятичные дроби и требует "американских".

Как заставить программу VB читать запятую как десятичный знак вместо разделителя или как экспортировать данные с точками вместо запятых?

Да, я могу загрузить 123,456 как a=123 и b=456, а затем вернуть значение как a + b/1000, но есть ли более элегантное решение?

Ответы [ 4 ]

11 голосов
/ 03 июня 2011

Выберите правильную функцию.

  • Val, Str всегда будет использовать настройки США (точка как десятичная дробь)
  • CDbl, Format будет учитывать региональные настройки.

Это все в разделе руководства по международному программированию .

7 голосов
/ 02 июня 2011

Ваша проблема может быть связана с использованием функции Val; это не международный. В тексте справки рекомендуется использовать CDbl при преобразовании строк в числа.

0 голосов
/ 17 октября 2017

Попробуйте,

Формат $ (CDbl (Text1.Text), "#, ## 0,00")

0 голосов
/ 03 июня 2011

Спасибо за ваши советы, я не уверен, что сделал что-то неправильно, но я получил только ошибки (т.е. несоответствие типов) или "чешскую" десятичную запятую.

Я пытался 'получил пощечину?Бейте его сильнее!Подход с этим кодом:

Dim PpP As String, SaveFile As Integer

PpP = Form1.TxtA10.Text & " " & Form1.TxtA11.Text
PpP = Replace(PpP, ",", ".")
Print #SaveFile, PpP

edit:

что-то означает пробовать эти функции на выходе, а не на входе.(например, попытка Double в качестве параметра String).

Этот код:

Input #1,TempString
Form1.TxtA10.Text = CDbl(TempString)

работает также.

...