Перенос приложений написанных на VB6 на ОС Windows 7
Формулировка задачи:
Друзья, возникла сложность следующего свойства. Написал приложение на VB. ОС: Windows XP SP3. При переносе на такие же оси все работает. А если переносить, допустим, на семерку или висту, то при запуске возникает "Unexpected error". Установщики не помогают (пробовал родной Package Wizard и InstalShield). Кто то советовал BitArts Fusion. Тоже не решил проблему. Наличие библиотек msvbvm50.dll и msvbvm60.dll проверял. Искал по форумам решение, не нашел. Если кто знает в чем суть этой "Unexpected error", помогите)
Решение задачи: «Перенос приложений написанных на VB6 на ОС Windows 7»
textual
Листинг программы
Private Declare Function HideCaret Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
KeyPreview = True
InputData.MaxLength = 16
End Sub
Private Sub Result_GotFocus()
HideCaret (Result.hwnd) 'Скрытие каретки в поле Result
End Sub
Private Sub Go_Click()
Dim X As Single
Dim Y As Single
Dim c As Variant
Dim t As Variant
Dim char As String
Dim response
Dim S As Double
Dim m() As String
If InputData.Text = "" Then 'Защита от ввода пустой строки
Exit Sub
End If
t = Len(InputData.Text) 'Замена точек на запятые
c = InputData.Text
For i = 1 To t
char = Mid(c, i, 1)
If char = "." Then
Mid(c, i, 1) = ","
End If
Next i
If Not IsNumeric(c) Then 'Проверка измененных входных данных на возможность перевода в число
response = MsgBox("Допускается ввод только числовых значений. Нажмите OK, чтобы вернуться.", vbOKOnly, "Ошибка")
InputData.Text = ""
InputData.SetFocus
Exit Sub
End If
X = c 'Присвоение проверенных входных данных к переменной числового типа
If X <= 0 Then 'Проверка числового значения на положительность
response = MsgBox("Допускается ввод только положительных чисел. Нажмите OK, чтобы вернуться.", vbOKOnly, "Ошибка")
InputData.Text = ""
InputData.SetFocus
Exit Sub
End If
Select Case X 'Выбор формулы для расчета
Case 0 To 20000 'Входные данные в диапазоне от 0 до 20001
Y = X * 4 / 100 'Расчет
If Y >= 400 Then
S = Format(Y, "0.00") 'Присвоение результата к переменной для обработки вывода
Else: Result.Text = "400 руб. 00 коп." 'Вывод результата в случае если он меньше 400
Exit Sub
End If
Case 20000.01 To 100000
Y = 800 + (X - 20000) * 3 / 100
S = Format(Y, "0.00")
Case 100000.01 To 200000
Y = 3200 + (X - 100000) * 2 / 100
S = Format(Y, "0.00")
Case 200000.01 To 1000000
Y = 5200 + (X - 200000) * 1 / 100
S = Format(Y, "0.00")
Case Is > 1000000
Y = 13200 + (X - 1000000) * 0.5 / 100
If Y <= 60000 Then
S = Format(Y, "0.00") 'Присвоение результата к переменной для обработки выходных данных
Else: Result.Text = "60000 руб. 00 коп." 'Вывод результата в случае если результата меньше 60000
Exit Sub
End If
End Select
If 0 = (S - CInt(S)) Then 'Проверка результата на целочисленность
Result.Text = Str(S) + " руб. 00 коп." 'Вывод результата в случае целочисленности
Else: m = Split(Str(S), ".") 'Разделение результата в случае дробности
Result.Text = m(0) + " руб. " + m(1) + " коп." 'Вывод результата в случае дробности
End If
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer) 'Привязка запуска вычисления к Enter
If KeyAscii = 13 Then
Call Go_Click
KeyAscii = 0
End If
End Sub
Private Sub Reset_Click()
InputData = ""
Result = ""
End Sub
Private Sub Exit_Click()
End
End Sub