9.88765132684E+29

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Valenok
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.07.2006 (Чт) 10:40

9.88765132684E+29

Сообщение Valenok » 13.07.2006 (Чт) 17:12

9.88765132684E+29

Подскажите пожалуйсто как вревратить сиё число
в нормальный вид:

9887651326840000000000000000000000000000

или в такую запись:
9.88765132684 * 10^29
--
Truly yours, Sasha.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 13.07.2006 (Чт) 17:27

Format. Есть функция такая.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Valenok
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.07.2006 (Чт) 10:40

Сообщение Valenok » 13.07.2006 (Чт) 17:44

А справочник функций не подскажешь?
--
Truly yours, Sasha.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 13.07.2006 (Чт) 17:49

Это не Апи. В МСДН есть точно. Используется так, если упрощенно:
Код: Выделить всё
Format(Число_или_переменная, формат) 
Формат "#####" количество # - это количество символов, сколько тебе нужно отобразить. Можно использовать точку и запятые.

Caption это не совсем то. Это надпись на кнопке. Насколько я помню.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Valenok
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.07.2006 (Чт) 10:40

Сообщение Valenok » 13.07.2006 (Чт) 17:56

Не подскажешь а что же "то" ?
--
Truly yours, Sasha.

Valenok
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.07.2006 (Чт) 10:40

Сообщение Valenok » 13.07.2006 (Чт) 18:04

Oxygen писал(а):Это не Апи. В МСДН есть точно. Используется так, если упрощенно:
Код: Выделить всё
Format(Число_или_переменная, формат) 
Формат "#####" количество # - это количество символов, сколько тебе нужно отобразить. Можно использовать точку и запятые.

Caption это не совсем то. Это надпись на кнопке. Насколько я помню.



Я в поиске был, я вот что не понял..
Я поставил вывод в 15 символов
только теперь он пишет тоже самое при етом съедая надпись E+29
Это не есть лучше..
--
Truly yours, Sasha.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 13.07.2006 (Чт) 18:10

Я поставила знаков 40. У меня все нормально. Ничего не отрезается, и лишнего ничего.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Valenok
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.07.2006 (Чт) 10:40

Сообщение Valenok » 13.07.2006 (Чт) 18:11

=)
40 то много.
Мне надо 15 а если в 15 не влезает тогда писать не: E+29
a : * 10^29
--
Truly yours, Sasha.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 13.07.2006 (Чт) 18:14

В нормальный вид приводит даже с одним #. У меня по крайней мере. А второго варианта ты никак не добъешься. По крайней мере программно. Только ручками если анализировать число.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Valenok
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.07.2006 (Чт) 10:40

Сообщение Valenok » 13.07.2006 (Чт) 18:15

Так. Понял. Спасибо.
А с кнопкой кстати как?
Мне как то не нравится что для того чтобы нажать на кнопку при помощи клавиатуры надо жать на Alt + ..
--
Truly yours, Sasha.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 14.07.2006 (Пт) 9:09

Наиболее извращенный вариант - переводи фокус на какой-то определенный объект и лови событие у этого объекта. После этого анализируй то, что было нажато, и соответственно уже потом программно выполняй то, что тебе нужно.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Valenok
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.07.2006 (Чт) 10:40

Сообщение Valenok » 14.07.2006 (Пт) 10:08

Понятно.
А можно как то ограничить ввод тоесть так чтобы вводились только цифры а не вводится всё что угодно а если не цифра то не добавляем её..
--
Truly yours, Sasha.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 14.07.2006 (Пт) 10:17

Вот функция. Не знаю подойдет она тебе или нет. Писалась давно. Для проверки на валидность (интересовали только числа) в текстбоксе. Исключает ввод всякой ерунды длительным нажатием на клавишу.
Код: Выделить всё
Private Function CheckValues(str_Val As String) As String
If str_Val <> "" Then
        If Len(str_Val) < 2 Then
                If (Val(Right$(str_Val, 1)) > 0 Or Right$(str_Val, 1) = "0") Then
                CheckValues = str_Val
                Else: CheckValues = Left$(str_Val, Len(str_Val) - 1)
            End If
        Else
            tmp_str$ = ""
            For I = 1 To Len(str_Val)
            If (Val(Mid$(str_Val, I, 1)) > 0 Or Mid$(str_Val, I, 1) = "0") Then tmp_str$ = tmp_str$ + Mid$(str_Val, I, 1)
            Next I
            CheckValues = tmp_str$
        End If
    End If
End Function
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 14.07.2006 (Пт) 10:21

Есть события _KeyDown, _KeyPress, _KeyUp в параматрах которых передаеться коды нажатых клавиш, анализируй и обрабатывай как нужно. Почитать можно даже в справке к Офису
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 14.07.2006 (Пт) 10:33

Сообственно функция использовалась для анализа. Я её ставила на change в текстбоксе. работает даже тогда, когда в этот текстбокс пытаются что-то скопировать. Насчет этих событий, иногда бывают глюки. Если человек нажмет и будет долго держать какую-то клавишу, то keyUp сработает только тогда, когда ты её отпустишь.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 14.07.2006 (Пт) 10:49

Oxygen
переводи фокус на какой-то определенный объект и лови событие у этого объекта

Достаточно включить KeyPreview для формы.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 22.11.2007 (Чт) 20:31

Valenok писал(а):Понятно.
А можно как то ограничить ввод тоесть так чтобы вводились только цифры а не вводится всё что угодно а если не цифра то не добавляем её..

Такой же и у меня вопрос. Работаю над ошибками ввода информации.
Пишу:
Код: Выделить всё
Private Sub Text1_Change()
If Not IsNumeric(Text1.Text) Then
MsgBox "Только цифры"
End If
End Sub

Все работает, если вводишь 25. Но если мне надо ввести 25.1, то выскакивает MsgBox "Только цифры"
Можно ли как победить? Видать точка -это уже не цифра. :wink:

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 22.11.2007 (Чт) 21:43

Дробная часть отделяется от целой части запятой (в твоих настройках).
Т.е. "25.1" воспринимается как скажем "25ъ1".

Так что стоит наверное проветь, какой символ установлен в системе как разделитель.

И ещё. Подобную проверку надо делать в _Validate, а не в _Change.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 22.11.2007 (Чт) 23:37

А не лучше будет изменить стиль текстового поля, используя SetWindowLong (с каким флагом не помню)?
Salus populi suprema lex

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 22.11.2007 (Чт) 23:45

dr.MIG
ES_NUMERIC?

Он АФАИК не пропускат дробные числа.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 22.11.2007 (Чт) 23:55

Оно самое. А вот не помню... Может и не пропускает.
Salus populi suprema lex

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Сообщение Proxy » 23.11.2007 (Пт) 8:08

А почему бы нельзя "+E" Заменить на "*10^"? на выходе ж просто строка. ИМХО Replace очень неплохо справится. Или я чего-то не догнал?

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Сообщение Proxy » 23.11.2007 (Пт) 8:18

или в такую запись:
9.88765132684 * 10^29

Ну точно - строка.
А почему нельзя просто заменить? Типа ктулху разгневается?

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 23.11.2007 (Пт) 8:28

Хакер писал(а):И ещё. Подобную проверку надо делать в _Validate, а не в _Change.

Я специально так переделал в _Change. Только начинаешь вводить, сразу предупреждение. А так надо с кнопкой и т.д. делать. Если много текст боксов, то после куча предупреждений вылезет, и думай куда не правильно ввел. А так сразу, по ходу ввода.
Еще хочу спросить, есть ли разница написания дробных чисел с запятой или точкой? Мне кажется, что правильно будет ставить точку.
Потому как писал прогу с дробным числом (запятая) и при умножении одного числа на другое была разница в ответе.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 23.11.2007 (Пт) 15:08

Правильно будет ставить разделитель, установленный в региональный настройках. Получить его можно, например, так -- Format(0, "."). А как будет реагировать твоя программа на попытку ввода "неправильного" разделителя -- это твоё дело. Я бы сделал как в виндовом калькуляторе -- автоматическая замена на текущий разделитель.
Salus populi suprema lex

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.11.2007 (Пт) 15:22

Saturn.65
Абсолютно неверная логика.

Если много текст боксов, то после куча предупреждений вылезет, и думай куда не правильно ввел.

Не будет никаких куч. Будет одно предупреждение, в случае неправильного ввода, при попытке перейти к другому текс-боку (кнопке и т.п.), и переход просто не произойдёт.

А так, нажал случайно точку - и на тебе предупреждение (это признак криворукости программиста).

Начал удалять число "12q3456" с конца Backspace-ом и каждый раз получаешь предупреждение.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 23.11.2007 (Пт) 17:25

Хакер писал(а):Начал удалять число "12q3456" с конца Backspace-ом и каждый раз получаешь предупреждение.

Это точно. Два раза MsgBox выскакивает. Надо переделать. А вообще то вот такие разные предупреждения при всяком неверном шаге это не слишком аляписто будет выглядеть? Или может все без всяких MsgBox сделать?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.11.2007 (Пт) 18:45

Saturn.65
Сделай в событии _Validate. Ты ведь наверное даже не пробовал это событие?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


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

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

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

    TopList