Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Поиск элементов Добавлено: 29.06.10 11:33  

Автор вопроса:  goodwen
Здравствуйте, как можно сделать поиск элементов? У меня есть грубо говоря список тех элементов которые нужно искать: Q001, Q002,Q003,Q004,Q005,Q006,Q007,Q008,Q009,Q010,Q011,Q012. Но в одной строке, где происходить поиск, может быть только несколько элементов (которые нужно найти):

{Мальчик}:Q009 Q001 Q025 Q026 Q027 Q028 Q040 Q041

То есть должно найтись Q009 и Q001.
Тут получается так, есть Label где прописана эта строка:{Мальчик}:Q009 Q001 Q025 Q026 Q027 Q028 Q040 Q041
И есть список элементов которые можно найти, но в данной строке их (которые нужно найти) всего два:Q009 и Q001, и после того, как каждый элемент нашёлся он заносится в одномерный массив по отдельным ячейкам, то есть Q009 будет в 1-ой ячейке, а Q001 будет во 2-ой ячейке. Подскажите пожалуйста, как это можно сделать.
Я знаю, что есть Split, но я могу записать только такую строку:

y=Split(label1, "Q001"; "Q002";"Q003";"Q004";"Q005";"Q006";"Q007";"Q008";"Q009";"Q010";"Q011";"Q012", -1)

А дальше не знаю, как написать.

Ответить

  Ответы Всего ответов: 23  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 29.06.10 11:59
По мне, так херню написал. Почему должно найтись Q009 и Q001? Какие ячейки? Эксель?

Ответить

Номер ответа: 2
Автор ответа:
 goodwen



Вопросов: 26
Ответов: 65
 Профиль | | #2 Добавлено: 29.06.10 13:31
На языке VB6, а по поводу ячейки я же написал: как каждый элемент нашёлся он заносится в одномерный массив по отдельным ячейкам, то есть Q009 будет в 1-ой ячейке, а Q001 будет во 2-ой ячейке. когда нашёлся элемент он заноситься в одномерный массив объявленный в VB6.

Есть список символов, которые должны искаться:Q001, Q002,Q003,Q004,Q005,Q006,Q007,Q008,Q009,Q010,Q011,Q012
но вмести их никогда в строке не будет! будет к примеру только Q001, Q009 или Q005,Q012.

Пример строки, которая написана в label:
{Мальчик}:Q009 Q001 Q025 Q026 Q027 Q028 Q040 Q041
Вы видите здесь, что есть только Q009 Q001, но нету остальных символов, которые я описал в списке, который нужен для поиска.
И херню пишите вы молодой человек.

Ответить

Номер ответа: 3
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 29.06.10 13:55
Изъясняйтесь вернее, папаша. Вы реально пишете неясные вещи. С такой постановкой вопроса никто не сможет ответить.
P.S. В массиве нет ячеек. Есть ЭЛЕМЕНТЫ.
P.P.S. Учите русский язык, ибо у Вас проблемы с пунктуацией.

Ответить

Номер ответа: 4
Автор ответа:
 goodwen



Вопросов: 26
Ответов: 65
 Профиль | | #4 Добавлено: 29.06.10 14:51
Ну так, Вы знаете как это сделать?

Ответить

Номер ответа: 5
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #5 Добавлено: 29.06.10 16:48
Он знает всё ;-), и даже чуть больше.
Короче у вас есть лабэл с элементами
Есть строка с элементами которые нужно найти в лабэле
Вам нужен массив строк с найденными элементами
Верно?

Ответить

Номер ответа: 6
Автор ответа:
 goodwen



Вопросов: 26
Ответов: 65
 Профиль | | #6 Добавлено: 29.06.10 20:49
Да, всё так, только, есть строка с элементами и нужно найти, какие из них присутствуют в строке, которая записана в label1 (где мальчик),и те элементы, которые там присутствуют занести в массив, там по идее будет дальше так, эти найденные элементы, которые записаны в массиве, используются точно так же, как та строка, с элементами (которая не в label1) и также ищется уже их наличие в анологичной строке, только записанной в label2, не подскажете, как это можно сделать?

Ответить

Номер ответа: 7
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #7 Добавлено: 29.06.10 21:06
Незнаю нафиг незнаю :-D вот у меня (где мальчик) там нет никаких лэбэлов, там моя мать и младшие братья

Ответить

Номер ответа: 8
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #8 Добавлено: 29.06.10 21:07
Переигрывать ненадо, и так очень смешно получается.

Ответить

Номер ответа: 9
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #9 Добавлено: 29.06.10 21:16
А код элементарный, можно найти в первой попавшейся книжке для чайников.

Ответить

Номер ответа: 10
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #10
Добавлено: 29.06.10 21:30
для поиска по строкам используется InStr

Ответить

Номер ответа: 11
Автор ответа:
 goodwen



Вопросов: 26
Ответов: 65
 Профиль | | #11 Добавлено: 29.06.10 21:38
  1.  
  2. Private Sub Command1_Click()
  3. Dim str()
  4. str = Array("Q001", "Q002", "Q003", "Q004", "Q005", "Q006", "Q007", "Q008", "Q009", "Q010", "Q011", "Q012")
  5. Dim arr() As String
  6. ReDim arr(0)
  7. For i = 0 To UBound(str)
  8.     If InStr(Label1.Caption, str(i)) > 0 Then
  9.         ReDim Preserve arr(UBound(arr) + 1)
  10.         arr(UBound(arr)) = str(i)
  11.     End If
  12. Next
  13.  
  14. For i = 1 To UBound(arr)
  15. Dim arrr() As String
  16. ReDim arrr(0)
  17.  
  18.     If InStr(Label2.Caption, arr(i)) > 0 Then
  19.         ReDim Preserve arrr(UBound(arrr) + 1)
  20.         arrr(UBound(arrr)) = arr(i)
  21.     End If
  22. Next
  23.  
  24.  
  25. For i = 1 To UBound(arrr)
  26. MsgBox ("Общий эллемент ") + arrr(i)
  27. Next
  28. End Sub
  29.  
  30. Private Sub Form_Load()
  31. Label1.Caption = "{Мальчик}:Q009 Q001 Q003 Q026 Q027 Q028 Q040 Q041"
  32. Label2.Caption = "{пошёл}:Q009 Q013"
  33. End Sub
  34.  


Вот, мне подсказали, я доделал до полного варианта, и если нажать на кнопку, то находит общий символ Q001, но если в label2 заменить Q009 на Q001, то должен найтись общий элемент Q001, но этого не происходит, можете найти ошибку?
Не знал, что вежливость это переигрывание, но если это вас так смешит, ради бога.

Ответить

Номер ответа: 12
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #12 Добавлено: 29.06.10 23:01
Да ладно, мне показалось, что ты просто прикалываешься.
С кода надо было начинать!
1. Самой первой строчкой в окне кода должна быть:
Option Explicit
2. Str это функция vb6
3. Чётко указывай типы массивов и переменных
4. будь проще :)

Ответить

Номер ответа: 13
Автор ответа:
 Dark Engine



ICQ: 343191665 

Вопросов: 51
Ответов: 98
 Web-сайт: www.wentas.2bb.ru
 Профиль | | #13
Добавлено: 29.06.10 23:18
Есть еще один нюанс, при операции ReDIM содержимое переопределяемого массива, записанное туда до этой операции - стирается. То есть итог куска кода
  1.  
  2. ReDim A(10) As Integer
  3. A(5) = 1
  4. ReDim A(20) As Integer
  5. Debug.Print A(5)


будет нулевым, можешь проверить. Массивы заполнять надо без ресайза

Ответить

Номер ответа: 14
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #14 Добавлено: 29.06.10 23:25
Не уверен, что правильно понял, но вот:
  1. Option Explicit
  2. Private Sub Command1_Click()
  3. Dim Stri() As Variant
  4. Dim Arr1() As String
  5. Dim Arr2() As String
  6. Dim I As Long
  7. Dim M1 As Long
  8. Dim M2 As Long
  9. Stri = Array("Q001 ", "Q002 ", "Q003 ", "Q004 ", "Q005 ", "Q006 ", "Q007 ", "Q008 ", "Q009 ", "Q010 ", "Q011 ", "Q012")
  10. Label1 .Caption = "Q001  Q002  Q003"
  11. Label2 .Caption = "Q001  Q002  Q005"
  12. For I = 0 To UBound(Stri)
  13. If InStr(Label1 .Caption, Stri(I)) > 0 Then
  14. ReDim Preserve Arr1 (M1)
  15. Arr1 (M1) = Stri(I)
  16. M1  = M1 + 1
  17. MsgBox Stri(I)
  18. End If
  19. Next
  20. M1  = M1 - 1
  21. For I = 0  To M1
  22. If InStr(Label2 .Caption, Arr1 (I)) > 0 Then
  23. ReDim Preserve Arr2 (M2)
  24. Arr2 (M2 ) = Arr1(I)
  25. M2  = M2 + 1
  26. MsgBox Arr1(I)
  27. End If
  28. Next
  29. End Sub

Ответить

Номер ответа: 15
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #15
Добавлено: 29.06.10 23:44
Dark Engine, ага, именно поэтому используется Preserve (точнее использовалось во времена правления vb6:-)
Smith, четкое указание типов, вряд ли предполагает использование Variant. Но без него функция Array() не заработает

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам