Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: разбор слова
 
 автор: gold man   (16.03.2010 в 19:17)   личное сообщение
 
 

подскажите, пожалуйста, как поизящнее разбить слово произвольной длины и пройтись в цикле по всем буквам. Спасибо

  Ответить  
 
 автор: ДрЮня   (16.03.2010 в 19:30)   личное сообщение
 
 

хелп по функциям Mid() и Len()

  Ответить  
 
 автор: osmor   (17.03.2010 в 09:03)   личное сообщение
 
 

смотря что хотите делать. Разбить можно и так

Sub str2Byte(mystring As String)
Dim U() As Byte
Dim intStep As Integer
Dim i As Integer
intStep = LenB("А")
U() = mystring
For i = 0 To UBound(U) Step intStep
Debug.Print U(i)
Next

End Sub

Но в целом, ответ Дрюни

  Ответить  
 
 автор: Explorer   (17.03.2010 в 11:20)   личное сообщение
 
 

For i = Len(Me.strSlovo) To 0 Step -1
s = s & Right(Left(strSlovo, i), 1)
Next i
MsgBox s

  Ответить  
 
 автор: час   (17.03.2010 в 11:32)   личное сообщение
 
 


Я тожа знаю , я тожа

Dim i As Integer
For i =1 to Len(Me!strSlovo)
  s = Mid(Me!strSlovo, i, 1)
  MsgBox s
Next i

  Ответить  
 
 автор: Explorer   (17.03.2010 в 12:24)   личное сообщение
 
 

не помню уже точно - но что-то бывало косило с Mid иногда в старых версиях Access (а может кажется)

  Ответить  
 
 автор: snipe   (17.03.2010 в 12:20)   личное сообщение
 
 

s = s & Left(Right(strSlovo, i), 1)

в варианте Right(Left(strSlovo, i), 1) - получается что слово наоборот написано
(хотя главное принцип )

  Ответить  
 
 автор: Explorer   (17.03.2010 в 12:21)   личное сообщение
 
 


получается что слово наоборот написано



это фича а не бага :)

  Ответить  
 
 автор: Lukas   (17.03.2010 в 12:24)   личное сообщение
 
 

Это описатель функции StrReverse.

  Ответить  
 
 автор: Gold Man   (17.03.2010 в 12:25)   личное сообщение
 
 

Спасибо, воспользовался.
Думал, какие-то конструкции есть типа split, потом for each

  Ответить  
 
 автор: Explorer   (17.03.2010 в 12:29)   личное сообщение
 
 

в общем случае нужно понимать для чего используется функция - причем понимать в широком смысле - "написал один раз используй везде".

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

для семантического разбора стринга лучше юзать не перебор а регекспы или алгоритмы нечеткого поиска

  Ответить  
 
 автор: Силblч   (17.03.2010 в 13:57)   личное сообщение
 
 

типа идея

?split(format("abcd","@ @ @ ")," ")(0)
a

предварительно "постройте" формат "@ @ @ " - судя по всему равен длине слова минус один :)
а дальше сплитайте
не знаю как по быстродействию ;) не тестил
щяс тестировщики набегут и всё починят

  Ответить  
 
 автор: Lukas   (17.03.2010 в 14:43)   личное сообщение
 
 

Для For Each:

Public Function CamaSutra(strWord As String)
    Dim col As New Collection
    Dim i As Integer, j
    
    For i = 1 To Len(strWord)
        col.Add Mid$(strWord, i, 1)
    Next i
    For Each j In col
        Debug.Print j
    Next j
End Function

  Ответить  
 
 автор: Explorer   (17.03.2010 в 15:45)   личное сообщение
 
 

я думаю тут бы больше подошел бы Array а не Collection

  Ответить  
 
 автор: Lukas   (17.03.2010 в 16:17)   личное сообщение
 
 

Думал, какие-то конструкции есть типа split, потом for each

Вообще, то была шутко (Function CamaSutra), но на всякий случай спрошу:
А с массивом можно работать циклом For Each?

  Ответить  
 
 автор: Explorer   (17.03.2010 в 16:36)   личное сообщение
 
 

в VBA уже не помню :)

насчет шутки - я понял, конечно

  Ответить  
 
 автор: Lukas   (17.03.2010 в 16:46)   личное сообщение
 
 

в VBA уже не помню
А я испугался что это я уже не помню.

  Ответить  
 
 автор: Explorer   (17.03.2010 в 17:03)   личное сообщение
 
 

не поленился - в хелпе есть, ну в принципе по логике и должно быть - просто действительно не помню уже точно :)
The following code loops through each element in an array and sets the value of each to the value of the index variable I.

Dim TestArray(10) As Integer, I As Variant
For Each I In TestArray
    TestArray(I) = I
Next I

  Ответить  
 
 автор: Lukas   (17.03.2010 в 17:07)   личное сообщение
 
 

Таки и впрямь не помню (не знаю).
Спасибо, а то я даже в хелп залезть что-то не догадался, тормоз.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList