powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / помогите с алгоритмом...
15 сообщений из 15, страница 1 из 1
помогите с алгоритмом...
    #36339524
Igor Mitichev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь найти строку с нужными мне данными . Для этого в цикле просматриваю все строки на предмет соответствия. Однако, если в файле нужных данных нет, то цикл вываливается с ошибкой времени исполнения 62 (ввод после конца файла). Как это грамотно поправить? Мой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
      ii = ""
      Open DateFile For Input As # 2  'Открываем файл для чтения
      Do While ii <> IP_Addr
       Line Input # 2 , i
       ii = Left(i, InStr(i, ";") -  1 )
       'Debug.Print ("ii равно: " & ii)
      Loop
      Close # 2 
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36339529
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на EOF проверяйте
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36339531
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Mitichev,

курите EOF Function
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36339554
Igor Mitichev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneна EOF проверяйте
Конструкция

Код: plaintext
Do Until EOF( 2 )

заставит программу читать весь файл до конца. А если нужное значение найдется раньше? Как в таком случае выйти из цикла?
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36339556
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exit do
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36340931
Igor Mitichev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

И еще один вопрос, если можно. У меня там этот цикл вложенный работает внутри "внешнего" цикла.
Чтобы не грузить лишними подробностями, я схемку составил. Если пишу так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Option Explicit
Dim i As String
Dim k As Byte


Private Sub Form_Load()
k =  1 
Open App.Path & "\test.txt" For Input As # 1  'Открываем файл для чтения
 For k =  1  To  2 
  Debug.Print "цикл N " & k
  
      Do Until EOF( 1 )
       Line Input # 1 , i
       Debug.Print (i)
       If i = "3" Then
       Debug.Print "test true"
       Exit Do
       End If
      Loop
  
 Next k
Close # 1 
'End
End Sub

То файл открывается на чтение и закрывается вне циклов, по одному разу в начале и в конце процедуры. Imho это логично. Но при этом результаты совсем не те, какие хотелось бы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
цикл N  1 
 1 
 2 
 3 
test true
цикл N  2 
 4 
 5 
 6 
 7 
 8 
 9 

То есть во втором подцикле файл просматривается не сначала, а продолжается с того, места, где просмотр был завершен в предыдущем цикле. Если открытие/закрытие файла внести внутрь цикла, то результат получается правильный, но системе приходится сотню раз открывать/закрывать один и тот же файл, что imho не эффективно с точки зрения нагрузки на систему:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub Form_Load()
k =  1 
For k =  1  To  2 
 Debug.Print "цикл N " & k
 Open App.Path & "\test.txt" For Input As # 1  'Открываем файл для чтения
  
      Do Until EOF( 1 )
       Line Input # 1 , i
       Debug.Print (i)
       If i = "3" Then
       Debug.Print "test true"
       Exit Do
       End If
      Loop
  
 Close # 1 
Next k
'End
End Sub
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
цикл N  1 
 1 
 2 
 3 
test true
цикл N  2 
 1 
 2 
 3 
test true

Вот не знаю, не грузиться и оставить второй вариант кода или можно как-то поправить первый вариант, чтобы каждый раз раз файл начинал просматриваться сначала.
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36340940
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем вам внешний цикл? я что-то вашу идею не понял
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36340942
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откройте файл с произвольным доступом и откатывайтесь на начало файла
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36340947
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Igor Mitichev
> То есть во втором подцикле файл просматривается не сначала, а продолжается с того, места, где просмотр был
> завершен в предыдущем цикле.

MSDN
Seek [#]filenumber, position

The Seek statement syntax has these parts:

Part Description
filenumber Required. Any valid file number.
position Required. Number in the range 1 – 2,147,483,647, inclusive, that indicates where the next read/write
operation should occur.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36341001
Igor Mitichev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneа зачем вам внешний цикл? я что-то вашу идею не понял

Так это у меня в схеме
Код: plaintext
If i = "3"
а в реальности значение i как раз задается во внешнем цикле.
там на самом деле во внешнем цикле считываются значения из одного файла, а во внутреннем цикле ищутся соответствующие этим значениям данные в другом файле. Но для форума я все максимально упростил, чтобы людям голову не морочить ненужными подробностями. Мне сам принцип надо было понять.

To Игорь Горбонос:

Спасибо,

Код: plaintext
1.
2.
Open App.Path & "\test.txt" For Input As # 1  'Открываем файл для чтения
For k =  1  To  2 
  Seek # 1 ,  1 
именно то, что я искал.
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36341006
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если бы вы сразу рассказали свою задачу =)
а то клещами из вас выпытывали по крупицам информацию
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36341038
Igor Mitichev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneесли бы вы сразу рассказали свою задачу =)
:) Задача была чтобы файл в каждом цикле начинал читаться с первой строки без закрываний/открываний.
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36341103
Igor Mitichev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneесли бы вы сразу рассказали свою задачу =)
а то клещами из вас выпытывали по крупицам информацию

Кстати, если уж говорить о реальных проектах, то чего вот тут компилятору не хватает? Модуль что-ли какой надо подключить? Оно мне сейчас не критично, у меня строки из цифр состоят, но из интереса. Главное в проекте, который несколько месяцев назад писал, эта же самая строчка (которую я собственно в нынешний проект скописастил), никаких претензий не вызывает. А в новом проекте - "моя твою не понимай", и всё.
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36341112
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте перевести на русский текст ошибки, поможет. Или узнать в справке что такое Option.

Jah loves you.
...
Рейтинг: 0 / 0
помогите с алгоритмом...
    #36341116
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Igor Mitichev
> А в новом проекте - "моя твою не понимай", и всё.

Это потому что она должна быть напиана возле Option Explicit

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / помогите с алгоритмом...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]