Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
mark+
-
- Продвинутый пользователь

-
-
- Сообщения: 156
- Зарегистрирован: 03.07.2003 (Чт) 0:04
- Откуда: Kurgan
mark+ » 03.08.2003 (Вс) 21:37
- Код: Выделить всё
Dim Pn as String
Dim N1 as Long
Dim N2 as Long
Dim N3 as Long
Let Pn="S2003TK64, 192M"
'Мне нужно получить в N1 первое число (в примере 2003) в N2 второе число (в примере 64), и в N3 третье число (в примере 192).
'Я не знаю как это сделать. Кто знает подскажите пожалуйста.

[/code]
-
A.A.Z.
-
- Член-корреспондент академии VBStreets

-
-
- Сообщения: 3035
- Зарегистрирован: 30.06.2003 (Пн) 13:38
-
A.A.Z. » 03.08.2003 (Вс) 22:55
Немного сумбурно, но...
- Код: Выделить всё
Dim Pn As String
Dim N1 As Long
Dim N2 As Long
Dim N3 As Long
Dim N(1 To 3) As Long
Dim c As Long
Dim a As String * 1
Dim b As String
Private Sub Form_Load()
N1 = 0
N2 = 0
N3 = 0
N(1 To 3) = 0
Pn = "S2003TK64, 192M"
c = 1
a = ""
b = ""
For i = 1 To Len(Pn)
If c > 3 Then GoTo m1
a = Mid(Pn, i, 1)
If IsNumeric(a) Then
For j = 1 To Len(Pn)
If c > 3 Then GoTo m1
b = Mid(Pn, i - 1 + j, 1)
If N(c) = 0 Then N(c) = Val(b): GoTo m2
If IsNumeric(b) Then
N(c) = Val(N(c)) & Val(b)
Else
c = c + 1
End If
m2: Next j
Else
End If
Next i
m1: N1 = N(1): N2 = N(2): N3 = N(3)
Debug.Print N1 '2003
Debug.Print N2 '64
Debug.Print N3 '192
End Sub
(Если нужно будет найти больше чисел, например, 4, то вместо "Dim N(1 To 3)" "Dim N(1 To 4)", в 11-ой строчке, начиная с Form_Load вместо "If c > 3" "If c > 4" и в конец строчки "m1: N1 = N(1): N2 = N(2): N3 = N(3)" добавить ": N4 = N(4)")
Последний раз редактировалось
A.A.Z. 04.08.2003 (Пн) 16:19, всего редактировалось 3 раз(а).
Нет меня больше
-
GSerg
-
- Шаман

-
-
- Сообщения: 14286
- Зарегистрирован: 14.12.2002 (Сб) 5:25
- Откуда: Магадан
GSerg » 04.08.2003 (Пн) 3:16
- Код: Выделить всё
Sub Aga(s As String, outArr() As Long)
Dim i As Long, tmpStr As String, tmpLng As Long, tmpIn As Boolean
Const sFilter As String = "0123456789"
tmpLng = -1
For i = 1 To Len(s)
If InStr(sFilter, Mid$(s, i, 1)) Then
If Not tmpIn Then tmpLng = tmpLng + 1: tmpIn = True
tmpStr = tmpStr + Mid$(s, i, 1)
Else
If tmpIn Then
outArr(LBound(outArr) + tmpLng) = Val(tmpStr)
tmpStr = vbNullString
tmpIn = False
End If
End If
Next
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 3