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

Ваш аккаунт

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

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

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

Ошибка при простой арифметике

58K
15 августа 2010 года
JEY
14 / / 15.08.2010
Код:
Option Explicit

Private Sub Text1_Change()
If Text1.Text = False Then
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
End If
If Text1.Text = "" Then
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
End If
If Text1.Text > 0 Then
Text3.Text = Sin(Text1.Text)
Text4.Text = Cos(Text1.Text)
Text5.Text = Tan(Text1.Text)
Text6.Text = Atn(Text1.Text)
End If
End Sub

При введении в текст1, остальные обновляются, а вот когда уже этот текст1 очищаешь бекспейсом то дает ошибку.
Я новичок, помогите разобраться.
6
15 августа 2010 года
George
4.1K / / 05.01.2007
Text1.Text - строка. Как Вы сравниваете ее с булевским False или числом 0?
58K
15 августа 2010 года
JEY
14 / / 15.08.2010
Это мой первый калькулятор, помогите как лутьше сделать.
58K
15 августа 2010 года
JEY
14 / / 15.08.2010
Код:
Option Explicit
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const ES_NUMBER = &H2000
Private Const GWL_STYLE = (-16)

Private Sub Form_Load()
    Call SetWindowLong(Text1.hwnd, GWL_STYLE, GetWindowLong(Text1.hwnd, GWL_STYLE) Or ES_NUMBER)
    Call SetWindowLong(Text2.hwnd, GWL_STYLE, GetWindowLong(Text2.hwnd, GWL_STYLE) Or ES_NUMBER)
End Sub

Private Sub Text1_Change()
If Text1.Text = 0 Then
Text3.Text = 0
Text4.Text = 0
Text5.Text = 0
Text6.Text = 0
End If
If Text1.Text > 0 Then
Text3.Text = Sin(Text1.Text)
Text4.Text = Cos(Text1.Text)
Text5.Text = Tan(Text1.Text)
Text6.Text = Atn(Text1.Text)
End If
End Sub
7
15 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: George
Text1.Text - строка. Как Вы сравниваете ее с булевским False или числом 0?

На самом-то деле в VB можно и не такое.Но в данном случае ТС неправ.Надо сравнивать Text1.Text с ""(если проверку на пустое поле) или с Val(Text1.Text)(но могут быть ошибки)

58K
16 августа 2010 года
JEY
14 / / 15.08.2010
Код:
Option Explicit
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const ES_NUMBER = &H2000
Private Const GWL_STYLE = (-16)

Private Sub Form_Load()
    Call SetWindowLong(Text1.hwnd, GWL_STYLE, GetWindowLong(Text1.hwnd, GWL_STYLE) Or ES_NUMBER)
    Call SetWindowLong(Text2.hwnd, GWL_STYLE, GetWindowLong(Text2.hwnd, GWL_STYLE) Or ES_NUMBER)
End Sub

Private Sub Text1_Change()
If Val(Text1.Text) = 0 Then
Text3.Text = 0
Text4.Text = 1
Text5.Text = 0
Text6.Text = 0
End If

If Text1.Text = "" Then
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
End If
If Val(Text1.Text) = Val(Text1.Text) Then
Text3.Text = Sin(Val(Text1.Text))
Text4.Text = Cos(Val(Text1.Text))
Text5.Text = Tan(Val(Text1.Text))
Text6.Text = Atn(Val(Text1.Text))
End If
End Sub


Вродебы заработало
6
16 августа 2010 года
George
4.1K / / 05.01.2007
Ерундой занимаетесь. Нафига Val использовать?
1. Сравнивать Text1.Text лучше с текстовыми значениями
2. Оператор Else ваше фсйо
3. Что это вообще за мегакод?
58K
17 августа 2010 года
JEY
14 / / 15.08.2010
Я только учусь поэтому за помощью и обращаюсь))
Это ест естественно калькулятор.
Проблема новая нашлась, как в текст боксе кнопкой удалить последний символ?
7
17 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
TextBoxN=Left$(TextBoxN,Len(TextBoxN)-1)
Например,так.Но это простой вариант
58K
18 августа 2010 года
JEY
14 / / 15.08.2010
Спасибо большое, а сложный вариант он каков? да и чем лучше или хуже?
И еще как мне сделать так чтобы в поля ввода можно было вводить цыфры знак минуса и запятую.
7
18 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
Под простым вариантом я подразумевал то,что это мне раньше всего в голову пришло:) Дальше можно фантазировать
Цитата: JEY
И еще как мне сделать так чтобы в поля ввода можно было вводить цыфры знак минуса и запятую.

Их ведь и так можно вводить,или я ошибаюсь?;)

58K
18 августа 2010 года
JEY
14 / / 15.08.2010
Неправильно выразился, чтоб ток их можно вводить
7
18 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
Не такая уж это простая задача.Тут 2 варианта–использовать API или разрешать вводить что угодно,но потом фильтроват содержимое поля
6
18 августа 2010 года
George
4.1K / / 05.01.2007
Всего лишь достаточно обрабатывать событие нажатия клавиши и проверять вводимый символ. В зависимости от него разрешать либо запрещать ввод.
@pixo $oft, хватит уже говорить о том, чего не знаешь?
7
18 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
Чего же я написал,что не знаю?Что знаю,то и пишу:)
Насколько я помню,средствами VB нельзя отменить ввод символа.Ну и при вставке из буфера "проверять вводимый символ" не получится,тут придётся писать отдельную ветвь
6
19 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: @pixo $oft
Чего же я написал,что не знаю?Что знаю,то и пишу:)

В том то и дело, что не знаешь. Ты пишешь на ВБ?

Цитата: @pixo $oft
Насколько я помню,средствами VB нельзя отменить ввод символа.Ну и при вставке из буфера "проверять вводимый символ" не получится,тут придётся писать отдельную ветвь

Плохо помнишь, делается это через события, как я выше написал.

7
19 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
Конечно,пишу.И про события знаю,работал же с ними
Возможно,через KeyDown\KeyUp\… можно так сделать–VB под рукой нет.Только если в случае закрытия формы это можно отменить,установив Cancel в 1(так вроде),то в случае с символами я там не припомню такого параметра
Опять же,остаётся проблема вставки из буфера(тут эти события вернут ТСу код комбинации клавиш).Тогда или событие Change,или опять постпроверка
[SIZE="1"][COLOR="Gray"](вроде как у меня достаточно постов было,где я упоминал про VB)[/COLOR][/SIZE]
6
19 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: @pixo $oft
Конечно,пишу.И про события знаю,работал же с ними

Непохоже, даже VB под рукой нету. В том же акцессе мог бы проверить.

Цитата: @pixo $oft
Возможно,через KeyDown\KeyUp\… можно так сделать–VB под рукой нет.Только если в случае закрытия формы это можно отменить,установив Cancel в 1(так вроде),то в случае с символами я там не припомню такого параметра

А он есть.

Цитата: @pixo $oft
Опять же,остаётся проблема вставки из буфера(тут эти события вернут ТСу код комбинации клавиш).Тогда или событие Change,или опять постпроверка

извращения

Цитата: @pixo $oft
(вроде как у меня достаточно постов было,где я упоминал про VB)

я не слежу за твоими постами, извини. зачем мне?

7
19 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: George
Непохоже, даже VB под рукой нету. В том же акцессе мог бы проверить

Так я и VB снёс(по причине временной ненадобности).А уж офиса(и тем более аксесса) нет,тоже пока не нужен

Цитата: George
извращения

Ваши идеи ТСу?

6
19 августа 2010 года
George
4.1K / / 05.01.2007
Цитата: @pixo $oft
Ваши идеи ТСу?

Я все написал выше. События.

35K
31 августа 2010 года
Radic
10 / / 06.03.2009
Option Explicit
Dim X As String, x1, x2 As Variant

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False: Shape2.Visible = False: Shape3.Visible = False: Shape4.Visible = False
Shape5.Visible = False: Shape6.Visible = False: Shape7.Visible = False: Shape8.Visible = False
Shape9.Visible = False: Shape10.Visible = False
End Sub

Private Sub Image1_Click()

If x2 = 1 Then Text1.Text = "": x2 = 0
X = 1
Text2.Text = X
Text1.Text = Text1.Text + Text2.Text
End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = False
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Visible = True
End Sub

Private Sub Image10_Click()
If x2 = 1 Then Text1.Text = "": x2 = 0
X = 0
Text2.Text = X
Text1.Text = Text1 + Text2
End Sub

Private Sub Image10_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape10.Visible = False
End Sub

Private Sub Image10_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape10.Visible = True
End Sub

Private Sub Image11_Click() 'ввод запятой для десятичных чисел
If x2 = 1 Then Text1.Text = "": x2 = 0
Text2.Text = X
Text1.Text = Text1.Text + "."
End Sub

Private Sub Image12_Click()
If x1 = 1 Then Text1.Text = Val(Text3.Text) - Val(Text1.Text)
If x1 = 2 Then Text1.Text = Val(Text3.Text) + Val(Text1.Text)
If x1 = 3 Then Text1.Text = Val(Text3.Text) * Val(Text1.Text)
If x1 = 4 Then Text1.Text = Val(Text3.Text) / Val(Text1.Text)
x1 = 5 'значение подрозумевающее получается=
Text3.Text = Text1.Text
Text2.Text = ""
x2 = 1
End Sub

Private Sub Image15_Click()
If x1 = 1 Then Text1.Text = Val(Text3.Text) - Val(Text1.Text)
If x1 = 2 Then Text1.Text = Val(Text3.Text) + Val(Text1.Text)
If x1 = 3 Then Text1.Text = Val(Text3.Text) * Val(Text1.Text)
If x1 = 4 Then Text1.Text = Val(Text3.Text) / Val(Text1.Text)
x1 = 3 'значение подрозумевающее умножение
Text3.Text = Text1.Text
Text2.Text = ""
x2 = 1
End Sub

Private Sub Image16_Click()
If x1 = 1 Then Text1.Text = Val(Text3.Text) - Val(Text1.Text)
If x1 = 2 Then Text1.Text = Val(Text3.Text) + Val(Text1.Text)
If x1 = 3 Then Text1.Text = Val(Text3.Text) * Val(Text1.Text)
If x1 = 4 Then Text1.Text = Val(Text3.Text) / Val(Text1.Text)
x1 = 4 'значение подрозумевающее деление
Text3.Text = Text1.Text
Text2.Text = ""
x2 = 1
End Sub

Private Sub Image17_Click() 'стерка последнего ошибочно введенного числа
Text1.Text = ""
End Sub

Private Sub Image18_Click() 'забрать в память и прибавить другое в него М+
Text4.Text = Val(Text4.Text) + Val(Text1.Text)
Text1.Text = ""
Label1.Caption = "M"
End Sub

Private Sub Image19_Click() 'стерка памяти
Text4.Text = ""
Label1.Caption = ""
End Sub

Private Sub Image2_Click()
If x2 = 1 Then Text1.Text = "": x2 = 0
X = 2
Text2.Text = X
Text1.Text = Text1 + Text2
End Sub

Private Sub Image2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape2.Visible = False
End Sub

Private Sub Image2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape2.Visible = True
End Sub

Private Sub Image20_Click() 'посмотреть число в памяти
Text1.Text = Text4.Text
End Sub

Private Sub Image21_Click() 'ввод нового числа в память
Text4.Text = Text1.Text
Text1.Text = ""
Label1.Caption = "M"
End Sub

Private Sub Image22_Click() '1/х
Text1.Text = 1 / Text1.Text
End Sub

Private Sub Image23_Click()
Text1.Text = "Братишка я устал, сам вычисляй свой процент!!!"
End Sub

Private Sub Image24_Click() 'корень квадратный
Text1.Text = Sqr(Text1.Text)
End Sub

Private Sub Image25_Click() 'стереть все и начать расчеты заново
Text1.Text = ""
x1 = 0: x2 = 0: X = 0: Text2.Text = 0: Text3.Text = 0
End Sub

Private Sub Image26_Click() 'смена знаков
Text1.Text = Text1.Text * (-1)
End Sub

Private Sub Image27_Click()
Text1.Text = Text1 \ 10 'возврат напечатанной цифры на 1 знак 12345...1234
End Sub


Private Sub Image3_Click()
If x2 = 1 Then Text1.Text = "": x2 = 0 'для удержания текстового окна 1 и обнуления до момента ввода следующей переменной
X = 3 'сама добавляемая переменная
Text2.Text = X 'для добавления значения в строке например 3
Text1.Text = Text1 + Text2 'для складывания строчных значений 12+3=123
End Sub

Private Sub Image14_Click() ' вычитание
If x1 = 2 Then Text1.Text = Val(Text3.Text) + Val(Text1.Text)
If x1 = 1 Then Text1.Text = Val(Text3.Text) - Val(Text1.Text)
If x1 = 3 Then Text1.Text = Val(Text3.Text) * Val(Text1.Text)
If x1 = 4 Then Text1.Text = Val(Text3.Text) / Val(Text1.Text)
x1 = 1 'значение символизирующее вычитание
Text3.Text = Text1.Text 'закладывает в буфер введенное значение
Text2.Text = "" 'обнуляет строчный буфер
x2 = 1 'для того, чтобы удерживать значение цифр в текстовом окне 1 до ввода следующего значения
End Sub

Private Sub Image13_Click() 'сложение
If x1 = 1 Then Text1.Text = Val(Text3.Text) - Val(Text1.Text)
If x1 = 2 Then Text1.Text = Val(Text3.Text) + Val(Text1.Text)
If x1 = 3 Then Text1.Text = Val(Text3.Text) * Val(Text1.Text)
If x1 = 4 Then Text1.Text = Val(Text3.Text) / Val(Text1.Text)
x1 = 2 'значение подрозумевающее сложение
Text3.Text = Text1.Text
Text2.Text = ""
x2 = 1
End Sub

Private Sub Image3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape3.Visible = False
End Sub

Private Sub Image3_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape3.Visible = True
End Sub

Private Sub Image4_Click()
If x2 = 1 Then Text1.Text = "": x2 = 0
X = 4
Text2.Text = X
Text1.Text = Text1 + Text2
End Sub

Private Sub Image4_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape4.Visible = False
End Sub

Private Sub Image4_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape4.Visible = True
End Sub

Private Sub Image5_Click()
If x2 = 1 Then Text1.Text = "": x2 = 0
X = 5
Text2.Text = X
Text1.Text = Text1 + Text2
End Sub

Private Sub Image5_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape5.Visible = False
End Sub

Private Sub Image5_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape5.Visible = True
End Sub

Private Sub Image6_Click()
If x2 = 1 Then Text1.Text = "": x2 = 0
X = 6
Text2.Text = X
Text1.Text = Text1 + Text2
End Sub

Private Sub Image6_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape6.Visible = False
End Sub

Private Sub Image6_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape6.Visible = True
End Sub

Private Sub Image7_Click()
If x2 = 1 Then Text1.Text = "": x2 = 0
X = 7
Text2.Text = X
Text1.Text = Text1 + Text2
End Sub

Private Sub Image7_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape7.Visible = False
End Sub

Private Sub Image7_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape7.Visible = True
End Sub

Private Sub Image8_Click()
If x2 = 1 Then Text1.Text = "": x2 = 0
X = 8
Text2.Text = X
Text1.Text = Text1 + Text2
End Sub

Private Sub Image8_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape8.Visible = False
End Sub

Private Sub Image8_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape8.Visible = True
End Sub

Private Sub Image9_Click()
If x2 = 1 Then Text1.Text = "": x2 = 0
X = 9
Text2.Text = X
Text1.Text = Text1 + Text2
End Sub

Private Sub Image9_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape9.Visible = False
End Sub

Private Sub Image9_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape9.Visible = True
End Sub
35K
31 августа 2010 года
Radic
10 / / 06.03.2009
могу исходник скинуть в программы
если надо
калькулятор сфоткал с настоящего , и описал его клавиши
получилось вроде бы ничего
89K
06 ноября 2015 года
aBreak
1 / / 25.10.2015
В калькуляторе (похожем на виндусовский) полно ошибок, несовпадение типов, деление на ноль и др.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог