Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
Чудик
-
- Постоялец
-
-
- Сообщения: 639
- Зарегистрирован: 06.07.2004 (Вт) 12:18
- Откуда: г. Егорьевск
-
Чудик » 01.03.2005 (Вт) 0:17
Есть FlexGrid, в который заносятся числа. Они соответсвенно вводятся как текстовые значения. В дальнейшем с ними необходимо выполнить арифметические операции. Для этого требуется предварительно конвертировать введеные текстовые значения в числовые, но при этом надо учесть, что значения как числа являются десятичными дробями. Как добиться требуемой конвертации?
-
Ariman
-
- Постоялец
-
-
- Сообщения: 817
- Зарегистрирован: 02.09.2003 (Вт) 16:23
- Откуда: Великая наша держава, г.Москва
-
Ariman » 01.03.2005 (Вт) 0:26
А Cdbl не пойдет?
-
Ramzes
-
- Скромный человек
-
-
- Сообщения: 5004
- Зарегистрирован: 12.04.2003 (Сб) 11:59
- Откуда: Из гробницы :)
-
Ramzes » 01.03.2005 (Вт) 2:59
dim str as string
dim inte as integer
sub x()
inte = str
end sub
-
Чудик
-
- Постоялец
-
-
- Сообщения: 639
- Зарегистрирован: 06.07.2004 (Вт) 12:18
- Откуда: г. Егорьевск
-
Чудик » 01.03.2005 (Вт) 8:14
CDbl - не переводит текстовые значения - выдает ошибку.
Тот вариант, который написал Ramzes тоже не идет из-за несоответствия типов.
-
Andrey Fedorov
-
- Член-корреспондент академии VBStreets
-
-
- Сообщения: 3287
- Зарегистрирован: 21.05.2004 (Пт) 9:28
- Откуда: Москва
Andrey Fedorov » 01.03.2005 (Вт) 8:41
Ну сделай хотя бы так:
- Код: Выделить всё
Debug.Print CVDbl(" 1.234 "), CVDbl(" 45,678 "), CVDbl(" 1,,23")
Public Function CVDbl(s As String) As Variant
Dim ss As String, sr As String
CVDbl = Null
ss = Format$(0, ".")
sr = IIf(ss = ",", ".", ",")
s = Replace(s, sr, ss)
On Error Resume Next
If IsNumeric(s) Then CVDbl = CDbl(s)
End Function
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...
-
Чудик
-
- Постоялец
-
-
- Сообщения: 639
- Зарегистрирован: 06.07.2004 (Вт) 12:18
- Откуда: г. Егорьевск
-
Чудик » 01.03.2005 (Вт) 9:28
Классно, мне понравилось. Спасибо!
-
tyomitch
-
- Пользователь #1352
-
-
- Сообщения: 12822
- Зарегистрирован: 20.10.2002 (Вс) 17:02
- Откуда: חיפה
tyomitch » 01.03.2005 (Вт) 19:58
Чудик писал(а):Классно, мне понравилось. Спасибо!
А просто
Val не подходил, интересно?
-
Чудик
-
- Постоялец
-
-
- Сообщения: 639
- Зарегистрирован: 06.07.2004 (Вт) 12:18
- Откуда: г. Егорьевск
-
Чудик » 01.03.2005 (Вт) 21:39
Нет, Val округляет, чего не надо.
-
tyomitch
-
- Пользователь #1352
-
-
- Сообщения: 12822
- Зарегистрирован: 20.10.2002 (Вс) 17:02
- Откуда: חיפה
tyomitch » 01.03.2005 (Вт) 22:30
Чудик писал(а):Нет, Val округляет, чего не надо.
"Не верю!" (с)
- Код: Выделить всё
?Val("1.2345")
1,2345
-
Чудик
-
- Постоялец
-
-
- Сообщения: 639
- Зарегистрирован: 06.07.2004 (Вт) 12:18
- Откуда: г. Егорьевск
-
Чудик » 01.03.2005 (Вт) 23:04
Да, tyomitch, ты прав. У меня тип поля в БД стоял не тот. Но, все равно Val округлает, если вместо точки набрать запитую (причем округляет в низжую сторону).
Так что обрабатывать все равно приходиться.
-
VAngel
-
- Обычный пользователь
-
-
- Сообщения: 81
- Зарегистрирован: 13.01.2005 (Чт) 0:10
- Откуда: 2:5030
-
VAngel » 01.03.2005 (Вт) 23:40
А если перед val() заменять запятую на точку?
Через replace(string, ",",".",1,1)
-
Ennor
-
- Конструктивный критик
-
-
- Сообщения: 2504
- Зарегистрирован: 18.12.2001 (Вт) 3:58
- Откуда: Калуга -> Москва
-
Ennor » 02.03.2005 (Ср) 14:27
Уж сколько раз твердили миру, что Val() не понимает национальные разделители дробной части... Ну вы бы хоть поиском попробовали!
-
tyomitch
-
- Пользователь #1352
-
-
- Сообщения: 12822
- Зарегистрирован: 20.10.2002 (Вс) 17:02
- Откуда: חיפה
tyomitch » 02.03.2005 (Ср) 15:36
Ennor писал(а):Уж сколько раз твердили миру, что Val() не понимает национальные разделители дробной части...
Имхо это не баг, а фича
-
Ennor
-
- Конструктивный критик
-
-
- Сообщения: 2504
- Зарегистрирован: 18.12.2001 (Вт) 3:58
- Откуда: Калуга -> Москва
-
Ennor » 02.03.2005 (Ср) 15:53
tyomitch писал(а):Имхо это не баг, а фича
Да, логично - слишком много работы пришлось бы выполнять в одной функции, по большей части ненужной. Получился бы еще один монстр типа Format(). Да и к VB SP6 могли бы поправить, если бы это был действительно баг
.
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot], Yandex-бот и гости: 145