Страница: 1 |
Прежде всего вместо If Dir(App.Path & "\libuary.lib") = "" Нужно писать If Dir(App.Path & "\libuary.lib") = vbnullstring Т.к. если несколько раз пишешь "", то компьютер выделяет несколько раз память для "" (пустого стринга), т.к. для него такая запись равна записи одной буквы. Запись vbnullstring можно писать сколько угодно раз. Для компьютера это одна и таже переменная. Но это цветочки. Вместо For i = 1 To Len(GL) 'Начинаем проверку out = Mid$(GL, i + 1) If optLng(0).Value = True Then If txtWord.Text = inp Then txtTrans.Text = out Else If txtWord.Text = out Then txtTrans.Text = inp End If Пишем Dim ArrStr() As String ArrStr = Split(Gl,"|") inp = ArrStr(0) out = ArrStr(1) If optLng(0).value Then Спасибо... Но мне хотелось увидеть более маленкий код... Быстрота у меня 1,2 на 1Мб. Твой код подает надежду на 0,7... на 1Мб конечно... Но всё таки спасибо!!!! Мегабайт кода в минуту... 0,7 Лудше!!! К стать, я посчитал... не 0,7 а 0,6! Радуюсь!!! Биру код... и файл гте то со строками около 1 МБ на каждой строчке по 11 символов минимум... Пускаю тайме (свой или другой с секндомером) и проверяю время до конца файла... Делю количество строк на время Страница: 1 |
Вопрос: Помогите соптимизировать код!!!
Добавлено: 09.02.03 15:51
Автор вопроса: Millenium | Web-сайт:
'Помогите соптимизировать код!!!
Private Sub cmdTranslate_Click()
'Проверка: Сушествует ли библиотека?
frmMain.MousePointer = 11
If Dir(App.Path & "\libuary.lib") = "" Then 'Эсли нет, то выводим сообшение об ошибке
MsgBox "Библиотека не найдена!", vbCritical + vbMsgBoxHelpButton, "Ошибка"
frmMain.MousePointer = 0
Exit Sub
Else
'Если она есть то начинаем прочесс считывания файла
Open App.Path & "\libuary.lib" For Input As 1 'Открываем для считывания
While Not EOF(1)
Line Input #1, GL 'Присваиваем значение
For i = 1 To Len(GL) 'Начинаем проверку
If Mid$(GL, i, 1) = "|" Then ' |-разделитель
inp = Left(GL, i - 1) 'Ввод равняется левому
out = Mid$(GL, i + 1) 'Вывод равняется правому
If optLng(0).Value = True Then 'Если первый радио батн включен то
If txtWord.Text = inp Then txtTrans.Text = out 'Присв. знач.
Else 'Если первый радио батн не включен, то
If txtWord.Text = out Then txtTrans.Text = inp 'Присв. знач.
End If
End If
Next i
Wend
Close #1 'Закрыть файл
End If
frmMain.MousePointer = 0
End Sub
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
vig11
ICQ: 213777061
Вопросов: 21
Ответов: 159
Профиль | | #1
Добавлено: 09.02.03 17:19
If Mid$(GL, i, 1) = "|" Then ' |-разделитель
inp = Left(GL, i - 1)
End If
Next i
If StrComp(txtWord.Text, inp, vbBinaryCompare) Then
txtTrans.Text = out
Else 'StrComp(txtWord.Text, inp, vbBinaryCompare)
Напиши, что делать если txtWord.Text <> inp
End If 'StrComp(txtWord.Text, inp, vbBinaryCompare)
Else 'optLng(0).value
If StrComp(txtWord.Text, out, vbBinaryCompare) Then
txtTrans.Text = inp
Else 'StrComp(txtWord.Text, out, vbBinaryCompare)
Напиши, что делать если txtWord.Text <> out
End If 'StrComp(txtWord.Text, out, vbBinaryCompare)
End If 'optLng(0).value
Номер ответа: 2
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #2
Добавлено: 09.02.03 17:58
Номер ответа: 3
Автор ответа:
vig11
ICQ: 213777061
Вопросов: 21
Ответов: 159
Профиль | | #3
Добавлено: 10.02.03 16:51
А что обозначает быстрота 1.2 на 1 MB. И быстрота 0.7 это лучше или хуже?
Номер ответа: 4
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #4
Добавлено: 10.02.03 17:21
Номер ответа: 5
Автор ответа:
vig11
ICQ: 213777061
Вопросов: 21
Ответов: 159
Профиль | | #5
Добавлено: 10.02.03 18:00
А как Ты считаешь? Есть какая-то методика расчёта?
Номер ответа: 6
Автор ответа:
Millenium
ICQ: 629966
Вопросов: 118
Ответов: 903
Web-сайт:
Профиль | | #6
Добавлено: 11.02.03 15:26