Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Мделенно пашет Добавлено: 14.11.09 14:17  

Автор вопроса:  Abiron
Есть код, который адаптировал из макроса под vb6. Он синонимизимрует текст. Но работает очень медленно. Может кто то подскажет как ускорить?

Dim WordApp As Word.Application
Dim DocWord As Word.Document
Dim mySi As SynonymInfo
Dim hey As String
Private Sub Command1_Click()

Set WordApp = New Word.Application





Set DocWord = WordApp.Documents.Add



WordApp.Visible = False


DocWord.Application.Selection.InsertAfter Text1


WordApp.Visible = False

'Application.ScreenUpdating = False

On Error Resume Next
'GoTo ErrorHandler
Randomize
    
Dim re As RegExp
Set re = CreateObject("VBScript.RegExp")
КолличествоПропусков = 0

For Each curWord In DocWord.Words
    
    w = Trim(curWord.Text)

    
    re.Pattern = "^[\-à-ÿÀ-ߨ¸a-zA-Z]*$"
    
    If re.Test(w) Then
    
    If passer < 1 Then
        If Z = 0 Then
            'passer = Int(2 + Rnd * 3)
            passer = 1 + КолличествоПропусков
        
            Debug.Print w
            Dim mySi As SynonymInfo
            Set mySi = curWord.SynonymInfo
            If mySi.MeaningCount > 0 Then
                Z = 1
                synList = mySi.SynonymList(Meaning:=1)
                
               
                ind = Int(Rnd * UBound(synList)) + 1
                
                
                s = synList(ind)
                

                re.Pattern = "[^\-&#224;-&#255;&#192;-&#223;&#168;&#184;a-zA-Z]"
                If Not re.Test(s) Then
                    curWord.Text = s & " "
                    hey = hey & curWord.Text
   
                Else
                    Z = countSpaces(w)
                End If
                Debug.Print s
                
            End If
            Set mySi = Nothing
        Else
            Z = Z - 1
        End If
    End If
        End If
    passer = passer - 1
ErrorHandler:
Next
Text1 = hey
End Sub

Function countSpaces(w)
    c = 0
    For i = 1 To Len(w)
        If Mid(w, i, 1) = " " Then
            c = c + 1
        End If
    Next
    countSpaces = c
End Function



Основное время съедает w = Trim(curWord.Text), но чем это заменить не знаю.

Ответить

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

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



Вопросов: 30
Ответов: 62
 Профиль | | #1 Добавлено: 14.11.09 14:20
Вместо
  1. re.Pattern = "^[\-&#224;-&#255;&#192;-&#223;&#168;&#184;a-zA-Z]*$"

в двух местах надо вставить
  1. re.Pattern = "^[\-а-яА-ЯЁёa-zA-Z]*$"
, отобразилось криво.

Ответить

Страница: 1 |

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



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