Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не могу создать прогу в VB

66K
16 февраля 2011 года
p10neer
5 / / 16.02.2011
Не могу создать прогу в VB, все время выбивает ошибку Compile error! Argument not optional
Условия задачи:
В цехе обрабатывается Н однаковых деталей на С станках. Время обработки одной детали Т минут. Определить время Р, за который будут обработаны детали, используя формулу: Р=Н*Т/С
Файл прилагается
58K
16 февраля 2011 года
JEY
14 / / 15.08.2010
Во вложении не все файлы
66K
16 февраля 2011 года
p10neer
5 / / 16.02.2011
Сори, прозевал файл!!!!
Вот перезалил
66K
16 февраля 2011 года
p10neer
5 / / 16.02.2011
Сори, прозевал файл!!!!
Вот перезалил[ATTACH]4936[/ATTACH]
327
16 февраля 2011 года
UserNet2008
748 / / 03.04.2010
txtЧас_оброблення_всіх_деталей
txtКількість_однакових_деталей
txtЧас_оброблення_одніеї_деталі
txtКількість_станків
Как я понел TextBox'ы тогда нужно сделать проверку ввода. В Вашем случаи только цифры

Неизпользуйте в именах русский и Юникод

Пробуйте так

Dim summa as integer

summa = (Val(txtКількість_однакових_деталей)* Val(txtЧас_оброблення_одніеї_деталі))/ Val(txtКількість_станків)

txtЧас_оброблення_всіх_деталей = Str(summa)
58K
17 февраля 2011 года
JEY
14 / / 15.08.2010
Может я конешно не так понял но вот что сделал я
327
17 февраля 2011 года
UserNet2008
748 / / 03.04.2010
Цитата: JEY
Может я конешно не так понял но вот что сделал я



Делайте так
Private Sub Command1_Click()
Dim T1T2 As Integer ' "Integer" можно заменить на Long

T1T2 = (Val(Text1.Text ) * Val(Text2.Text ))/ Val(Text3.Text )
Text4.Text = Str(T1T2)

End Sub

277
18 февраля 2011 года
arrjj
1.7K / / 26.01.2011
Ахаха, поржал спасибо, эпичненько.
Вобщем по сабжу: ТС при создании своего проекта скопипастил Text1 и на предложение VB создать массив элементов чутко согласился, этъ раз. Два никогда не складывайте(умножайте/делите/вычитайте) текстбоксы непосредственно. Может я конечно слишком параноик но я это делаю так: Text1.Text=CInt(Text2.Text)*CInt(Text3.Text) (к примеру)
Ну и на последок: архив с пофиксеным проектом и собраным exe (visual basic 6)
на депозите, т.к. файлы после обновления форума не прикрепляются

//Так чисто от себя: никогда не называйте объекты кирилическими именами - примета плохая.
277
19 февраля 2011 года
arrjj
1.7K / / 26.01.2011
А почему не CInt или CDbl? Cint возвращает целое округленное число из выражения CDbl возвращает дробное число из выражения а Val возвращает только целую чатсть из выражения. Так почему использовать именно Val? Ну да единственное его приемущество в безопасности использования - он не выдаст ошибку 13 Conversion error или как там,поэтому если пользователь введет полный бред в поле ввода программа его всеравно схавает молча.
А если я этим:
Цитата:
Ахаха, поржал спасибо, эпичненько.

задел чьёто самолюбие, прошу прощения, это не было никому конкретно адресованно, это я над синтаксисом языка прикалываюсь. Ну а Str я неиспользую, потому что на VB я не пишу и без понятия что там вообще такая функция была, спс взял на заметку, но походу для стринга в VB и так перегружен оператор = для корректного преобразования числа в текст.

[COLOR="white"]Ну и редактировать свои сообщения после того как ктото ответил - просто некультурно.[/COLOR]

327
19 февраля 2011 года
UserNet2008
748 / / 03.04.2010
[COLOR="red"]А почему не CInt или CDbl?[/COLOR]
Cint(числовое_выражение) - числовое выражение, но не как String
Вот пример

Dim MyDouble, MyInt
MyDouble = [COLOR="blue"]2345.5678[/COLOR] ' MyDouble как Double.
MyInt = [COLOR="#ff00ff"]CInt[/COLOR](MyDouble) ' MyInt содержит [COLOR="blue"]2346[/COLOR].

[COLOR="red"]Так почему использовать именно Val?[/COLOR]
Вот пример переменные: a as Integer, b as Double, c as String
c = "[COLOR="blue"]2345.5678[/COLOR]"
a =[COLOR="#ff00ff"] Val[/COLOR](c)
b = [COLOR="#ff00ff"]Val[/COLOR](c)

результат:
a [COLOR="blue"]2346[/COLOR]
b [COLOR="blue"]2345.5678[/COLOR]
66K
20 февраля 2011 года
p10neer
5 / / 16.02.2011
Всем большое спасибо я на конец то понял в чем была ошибка!!!!!!!!
Большое спасибо за помощь!!!!
405
21 февраля 2011 года
Dmitrii
554 / / 16.12.2004
UserNet2008, Вам на заметку:
Цитата:
Note
The [color=blue]Val[/color] function recognizes only the period [color=green](.)[/color] as a valid decimal separator. When different decimal separators are used, as in international applications, use [color=blue]CDbl[/color] instead to convert a string to a number.

33K
24 февраля 2011 года
iprog
60 / / 26.01.2010
Хм... Во-первых, нужно писать Val("""имя текстового поля.Text"""), если Вы хотите проделать математические операции с содержимым текстовых полей. Во-вторых, лучше, конечно, не использовать в названиях объектов кириллицу (это мое собственное мнение).
327
25 февраля 2011 года
UserNet2008
748 / / 03.04.2010
Цитата: Dmitrii
UserNet2008, Вам на заметку:

[COLOR="#f4a460"]Note
The Val function recognizes only the period (.) as a valid decimal separator. When different decimal separators are used, as in international applications,[COLOR="red"] use CDbl instead to convert a string to a number[/COLOR]:confused:.[/COLOR]

[COLOR="blue"]Дайте ссылку на выше написанное:confused: [/COLOR]



[COLOR="#ff00ff"]CDBL[/COLOR] - функция, преобразующая [COLOR="red"]числовое выражения[/COLOR] в число двойной точности.
[COLOR="#ff00ff"]CDBL[/COLOR]([COLOR="red"]числовое_выражения[/COLOR])

[COLOR="#ff00ff"]Val[/COLOR] - Возвращает числа, содержащиеся в строке в качестве [COLOR="green"]числовых значений[/COLOR] [COLOR="red"]соответствующего типа[/COLOR].

Вот ссылочка или здесь или здесь

277
26 февраля 2011 года
arrjj
1.7K / / 26.01.2011
Цитата:
use CDbl instead to convert a string to a number.
Дайте ссылку на выше написанное


Мсдн, куда ты сам и отправил читаем:
[quote=msdn]
Примечание.

Функция Val распознает только точку (.) в качестве допустимого десятичного разделителя. Когда используются другие десятичные разделители, например в приложениях на разных языках, применяйте вместо функции Val функцию CDbl или CInt, чтобы преобразовать строку в число.
[/quote]

327
27 февраля 2011 года
UserNet2008
748 / / 03.04.2010
277
27 февраля 2011 года
arrjj
1.7K / / 26.01.2011
Именно, потому что в русской локали разделитель целой части и дробной запятая а не точка, как в примере выше. Об этом и говорится на мсдн'е функции CInt и CDbl используют системные настройки для определения разделителя а Val использует только точку.
327
27 февраля 2011 года
UserNet2008
748 / / 03.04.2010
Цитата: arrjj
Именно, потому что в русской локали разделитель целой части и дробной запятая а не точка, как в примере выше. Об этом и говорится на мсдн'е функции CInt и CDbl используют системные настройки для определения разделителя а Val использует только точку.



Dim aaa$
Dim bbb%
Dim ccc#
Dim summa#

aaa = "1,555"
bbb = 2
ccc = 3
summa = Val(aaa) + bbb + ccc
summa = CDbl(aaa) + bbb + ccc

Да теперь работает, только summa = Val(aaa) + bbb + ccc равна 6.0, а summa = CDbl(aaa) + bbb + ccc равна 6.555

Вы хотите сказать, что используют системные настройки у меня 7rus х64 и это значит что на 7ang х64 будет другой результат?
Нечто подобное было с путями директорий на 7rus выдавал ошибку , а 7ang нет

Спасибо учту этот ньюанс или как Вы говорили возьму на заметку. Спасибо

277
27 февраля 2011 года
arrjj
1.7K / / 26.01.2011
На eng будет работать aaa="1(точка)555" (корректно отрабатывают и Val и CDbl) а на рус aaa="1(запятая)555" (корректно только CDbl). Просто помоему разработчики VB надеятся что английские пользователи будут вводить числа, разделенные точкой а русские - запятой, тогда CDbl будет корректно работать в обоих случаях.
405
28 февраля 2011 года
Dmitrii
554 / / 16.12.2004
1.
Цитата: UserNet2008
[color=blue]Дайте ссылку на выше написанное[/color]

Это фрагмент справки по VB 6.

2.

Цитата: UserNet2008
CDBL - функция, преобразующая [color=red]числовое выражения[/color] в число двойной точности


В материале, на который указывает первая же из приведённых Вами ссылок ("Вот ссылочка"), читаем:

Цитата:
Use the CDbl function to provide conversions [color=green]from any data type[/color] to a Double subtype.

327
28 февраля 2011 года
UserNet2008
748 / / 03.04.2010
Цитата:
Dmitrii



Спасибо я разобрался проблема была в разделители целой (запитая или точка)

В 7ке RUS
[COLOR="#4169e1"]Язык и региональные стандарты - Форматы - Дополнительные парметры... - Числа - Разделитель целой и дробной части[/COLOR] [COLOR="red"]ставим[COLOR="blue"] (.)[/COLOR]точку[/COLOR].

или программно в параметре [COLOR="#4169e1"]sDecimal[/COLOR] [COLOR="red"]ставим[COLOR="blue"] (.)[/COLOR]точку[/COLOR].
[COLOR="#9acd32"]HKEY_CURRENT_USER\Control Panel\International
HKEY_USERS\S-1-5-21-1801223366-1919233639-1525130727-1001\Control Panel\International[/COLOR]

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог