Визуальная основная дескриптор дескриптора

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

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

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

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

Ответ 1

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

Ответ 2

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

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

Все это в разделе о международном программировании.

Ответ 3

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

Я пробовал "Похлопал? Ударь его сильнее! aproach с этим кодом:

Dim PpP As String, SaveFile As Integer

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

изменить:

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

Этот код:

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

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

Ответ 4

Попробуйте,

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