Люди помогите....

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Yurik
Постоялец
Постоялец
 
Сообщения: 553
Зарегистрирован: 08.04.2002 (Пн) 21:09
Откуда: Нижневартовск [Rulez 4ever]

Люди помогите....

Сообщение Yurik » 16.03.2004 (Вт) 22:40

Привет всем!!!
У меня такая трабла я сижу и не пойму почему у меня не получается реализовать такую штуку....

есть вот такая вот строка 1,2,3,4,5,11,3,18,2
надо чтобы прога сделал следующее с этой строкой --- она должна пошагово показать сначала 1 потом 2 потом 3 потом 4 и так далее до конечного числа в этой строке......короче говоря прога должна выдирать числа заключенные между запятыми и показывать их!

Плиз помогите я уже час зад праю!
Существует не только виртуальная реальность - все будет.

Yurik
Постоялец
Постоялец
 
Сообщения: 553
Зарегистрирован: 08.04.2002 (Пн) 21:09
Откуда: Нижневартовск [Rulez 4ever]

Сообщение Yurik » 16.03.2004 (Вт) 23:02

Кстати вот то, что я напарил....я решил что лучше сразу направить программу на сверку двух текстовых полей ..... то есть есть поле

1,2,11,5
и поле
2,5

программа приведенная ниже посути должна убрать из первой строки те числа после запятых, которые совпадают с числами из второй строки , в примере с этими строками программа должна убрать числа 2 и 5......

в проге приведенной ниже есть глюк она уберет 2 и все а 5 не трогает думаю ошибка в коде кнопки....но я пока не придумал как перелопатить код!!!!!!!!!

Код: Выделить всё
Public Function ReplaceStr(ByVal strMain As String, strFind As String, strReplace As String) As String
    Dim lngSpot As Long, lngNewSpot As Long, strLeft As String
    Dim strRight As String, strNew As String
    lngSpot& = InStr(LCase(strMain$), LCase(strFind$))
    lngNewSpot& = lngSpot&
    Do
        If lngNewSpot& > 0& Then
            strLeft$ = Left(strMain$, lngNewSpot& - 1)
            If lngSpot& + Len(strFind$) <= Len(strMain$) Then
                strRight$ = Right(strMain$, Len(strMain$) - lngNewSpot& - Len(strFind$) + 1)
            Else
                strRight = ""
            End If
            strNew$ = strLeft$ & strReplace$ & strRight$
            strMain$ = strNew$
        Else
            strNew$ = strMain$
        End If
        lngSpot& = lngNewSpot& + Len(strReplace$)
        If lngSpot& > 0 Then
            lngNewSpot& = InStr(lngSpot&, LCase(strMain$), LCase(strFind$))
        End If
    Loop Until lngNewSpot& < 1
    ReplaceStr$ = strNew$
End Function

Private Sub Command2_Click()
Dim i As Integer
For i = 1 To Len(Text2.Text)
    If Mid((Text2.Text), i, 1) = "," Then
        MsgBox Mid((Text2.Text), 1, i - 1)
        Text1.Text = ReplaceStr(Text1.Text, Mid((Text2.Text), 1, i - 1), "")
    End If
Next i
End Sub



Люди помогите!!!!!!1 :( :cry: :( :cry:
Существует не только виртуальная реальность - все будет.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 16.03.2004 (Вт) 23:03

Напишу, только проверить негде - так что не бей сильно

Код: Выделить всё
Dim arrNumbers() as String
arrNumbers = Split("1,2,3,4,5,6,7,8", ",")

Dim i as Long
For i = LBound(arrNumbers) to UBound(arrNumbers)
     msgbox arrNumbers(i)
Next

Короче, есть функция Split, которая принимает строку и разделитель. Переданную строку разобьет на части и вернет массив строк. Потом можешь по этому массиву пробежаться и делать с его элементами, что тебе заблагорасудится...
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Yurik
Постоялец
Постоялец
 
Сообщения: 553
Зарегистрирован: 08.04.2002 (Пн) 21:09
Откуда: Нижневартовск [Rulez 4ever]

Сообщение Yurik » 16.03.2004 (Вт) 23:45

2 Rainbow: Блин спасибо.....ох()еть как помог....все ша спать пойду вот что значит долго не програмить и ночью програмить.....такой спасительный оператор забыл....а может даже и не вспомнил если бы не ты!!!!

Спасибо выручил! Пойду Спать!
УРАААААААА! :lol: :lol: :lol:
Существует не только виртуальная реальность - все будет.

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 17.03.2004 (Ср) 12:37

Да, еще не все верят, что бывают девушки программеры....

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 17.03.2004 (Ср) 13:01

Да ладно вам ;)
Настоящие девушки-программеры - это действительно большая редкость :) А у нас на форуме, между прочим, если присмотреться, то девушек-программеров не так и мало :)
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 17.03.2004 (Ср) 15:09

Кстати,
Код: Выделить всё
Private Sub Form_Load()
  Dim arrNumbers() As String, arrNumbers2() As String
  Dim res As String, i As Long
 
  arrNumbers = Split("1,2,11,5,33", ",")
  arrNumbers2 = Split("2,5", ",")
 
  For i = 0 To UBound(arrNumbers2)
    arrNumbers = Filter(arrNumbers, arrNumbers2(i), False)
  Next
  res = Join(arrNumbers, ",")
  Unload Me
End Sub

На выходе res == "1,11,33"
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.03.2004 (Ср) 15:33

Обалдеть... Сколько живу, по функцию Filter() не слышал :)
Я знаю, Vi один из разработчиков VB :)
Lasciate ogni speranza, voi ch'entrate.

Yurik
Постоялец
Постоялец
 
Сообщения: 553
Зарегистрирован: 08.04.2002 (Пн) 21:09
Откуда: Нижневартовск [Rulez 4ever]

Сообщение Yurik » 17.03.2004 (Ср) 15:37

Vi, ну а ты вообще меня удивил :shock: ...я про Filter вообще не знал до сегоднешнего дня.....

Блин спасибо всем!
Существует не только виртуальная реальность - все будет.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 17.03.2004 (Ср) 15:51

Если честно, я тоже не слышала... :oops:

Но будь осторожен с Filter - уничтожит все вхождения
(протестируй на строчке "2,2,1,2,11,5,1222,33,55,5,5")

Я бы написала по-другому:
Код: Выделить всё
Dim str1 As String
Dim str2 As String
Dim sDelim As String
str1 = "2,2,1,2,11,5,1222,33,55,5,5"
str2 = "2,5"
sDelim = ","

Dim arrStr2() As String
arrStr2 = Split(str2, sDelim)

Dim i As Long, sFind As String
For i = LBound(arrStr2) To UBound(arrStr2)
    sFind = arrStr2(i)
   
    'уничтожить все внутренние вхождения
    str1 = Replace(str1, sDelim & sFind & sDelim, sDelim)

    'уничтожить вхождения в начале строки
    If Left$(str1, Len(sFind) + Len(sDelim)) = sFind & sDelim Then
        str1 = Right$(str1, Len(str1) - Len(sFind) - Len(sDelim))
    End If

    'уничтожить вхождения в конце строки
    If Right$(str1, Len(sFind) + Len(sDelim)) = sDelim & sFind Then
        str1 = Left$(str1, Len(str1) - Len(sFind) - Len(sDelim))
    End If
Next
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 1

    TopList