MadFire писал(а):У меня предложение находится в Поле формы access.
dim strMyText as string
strMyText = Поле1.Text
dim strMyTextArr() as string
strMyTextArr = split(strMyText, Chr$(vbKeySpace))
Private Sub CommandButton1_Click()
Dim strMyText As String
Dim strMyTextArr() As String
Const strWhat As String = "ар"
strMyText = "Мама мыла раму, харе рама, харе-харе!"
strMyTextArr = Split(strMyText, Chr$(vbKeySpace))
Dim intIterator As Integer
Dim intPosition As Integer
Dim intWord As Integer
For intWord = LBound(strMyTextArr) To UBound(strMyTextArr)
intPosition = 0
For intIterator = 1 To Len(strMyTextArr(intWord))
intPosition = InStr(intIterator, strMyTextArr(intWord), strWhat)
If intPosition > 0 Then
MsgBox "Найдено '" & strWhat & _
"' в слове №" & CStr(intWord) & _
", в позиции №" & CStr(intPosition) & _
" '" & strMyTextArr(intWord) & "'"
intIterator = intPosition
End If
Next
Next
MadFire писал(а):Отлично! спс большое
MadFire писал(а):А как найденное слово в конец предложения перекинуть?
strMyText = Поле1.Text Невозможно обратиться к свойству или методу элемента управления...
1. Записать значение элемента в переменную
2. Удалить элемент из коллекции/массива
3. Добавить элемент с записанным значением
Денис писал(а): 2. Ну это уже наглость, молодой человек. Давайте-ка жмите F2 в бейсике и изучайте свойства объектов.
MadFire писал(а):Получается лучше использовать массив?
1. Дописать в конец найденное слово (с изменениями, если таковые есть)
2. Написать по текущему индексу ключевое слово - признак удаления, например "(None)"
3. Пройтись по массиву и выписать в новый массив все элементы, кроме признаков.
MadFire писал(а):Ето для переводчика....переведенное предложение надо по правилу построить.
Денис писал(а):MadFire писал(а):Ето для переводчика....переведенное предложение надо по правилу построить.
Жесть! Переводчик в Access? Но это у вас получится что-то с чем-то. В смысле тормоза дикие. И не только из-за VBA, но еще и из-за алгоритмов. по идее нужно строить дерево из структуры предложения на исходном языке, проводить перевод, подбирать аналогичную структуру на целевом языке, потом выстраивать дерево на целевом языке, а потом выводить его в конечное предложение.
Если ляпать всё это без анализа, будут дикие тормоза и куча нечитаемых if..else.
Желаю удачи!
Хакер писал(а):Мухи замедленного действия любят стрелы, что тут ещё скажешь...
Хакер писал(а):Нет, лучше вообще никак, чем так.
MadFire писал(а):в гугле нет этого языка к сожалению...
MadFire писал(а):А что если склеить слова из strMyTextArr в нужном порядке (в цикле от 1 до кол-ва слов, проверить номер с номером найденного, если совпадает, то в результат его не пишем, иначе прибавляем в результат + пробел).
FOR intWord = LBOUND(strMyTextArr) TO UBOUND(strMyTextArr)
intPosition = 0
FOR intIterator = 1 TO LEN(strMyTextArr(intWord))
intPosition = INSTR(intIterator, strMyTextArr(intWord), strWhat)
IF intPosition > 0 THEN
MsgBox "Найдено '" & strWhat & _
"' в слове №" & CStr(intWord) & _
", в позиции №" & CStr(intPosition) & _
" '" & strMyTextArr(intWord) & "'"
num_word = intWord
intIterator = intPosition
END IF
NEXT
NEXT
new_str = ""
FOR intWord = LBOUND(strMyTextArr) TO UBOUND(strMyTextArr)
if intWord<>num_Word THEN new_str=new_str & strMyTextArr(intWord) & " "
NEXT
new_str = new_str & strMyTextArr(num_Word)
Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 7