Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 13:06   #1
kobolok
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 23
По умолчанию нужна помощь по vb

Как создать циклв отом примере:

Dim F As Long
Dim FileName As String
Dim MyText As String
Dim x

Private Sub Command1_Click()
Text5.Text = ""
Text1.Text = "Radmin.exe"
Text3.Text = ":4899"
Text2.Text = "/connect:"
Text4.Text = " /telnet"

''''''''''''''''''''''''''''''''1'' ''''''''''''''''''''''''''''''''''' ''''
x = 0
MyText = ""
FileName = Dir("D:\555\1.txt")
If FileName <> "" Then
F = FreeFile
Open App.Path & "\1.txt" For Input As #F
Do Until EOF(F)
Line Input #F, MyText
x = x + 1
If x > 9 Then

MyText = Left(MyText, 15)
MyText = Replace(MyText, " ", "")

Text5.Text = Text5.Text & Text1.Text & Text2.Text & MyText & Text3.Text & Text4.Text & vbCrLf

Else
End If

Loop
Close #F

Else
End If
''''''''''''''''''''''''''''''''''' '''''''2''''''''''''''''''''''''''' '''''''''''''
x = 0
MyText = ""
FileName = Dir("D:\555\2.txt")
If FileName <> "" Then
F = FreeFile
Open App.Path & "\2.txt" For Input As #F
Do Until EOF(F)
Line Input #F, MyText
x = x + 1
If x > 9 Then

MyText = Left(MyText, 15)
MyText = Replace(MyText, " ", "")

Text5.Text = Text5.Text & Text1.Text & Text2.Text & MyText & Text3.Text & Text4.Text & vbCrLf

Else
End If

Loop
Close #F

Else
End If

задача такая:
есть группа текстовых файлов с 1 по n.
Нужно проверить его существование
FileName = Dir("D:\555\1.txt")
И открыть очередной файл
Open App.Path & "\1.txt" For Input As #F
Это сделано для одного файла.
Как сделать чтобы был перебор по всем существующим файлам?
пробовал ставить переменную вместо имени файла,не прокатывает,вроде.Не прописывать же тысячу одинаковых блоков,различающихся только именем открываемого и проверяемого файла.
kobolok вне форума Ответить с цитированием
Старый 17.05.2009, 13:32   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуй так:
Код:
Sub Command1_Click()
    МаскаПути = "D:\555\$.txt"
    Text1.Text = "Radmin.exe": Text3.Text = ":4899": Text2.Text = "/connect:": Text4.Text = " /telnet"

    For i = 1 To n
        Filename = Replace(МаскаПути, "$", i)
        If Dir(Filename) <> "" Then
            F = FreeFile: x = 0
            Open Filename For Input As #F
            Do Until EOF(F)
                Line Input #F, MyText
                x = x + 1
                If x > 9 Then
                    MyText = Replace(Left(MyText, 15), " ", "")
                    Text5.Text = Text5.Text & Text1.Text & Text2.Text & MyText & Text3.Text & Text4.Text & vbCrLf
                End If
                ' тут делаем что-то ещё
            Loop
            Close #F
        End If
    Next i
End Sub
Цитата:
.Не прописывать же тысячу одинаковых блоков,различающихся только именем открываемого и проверяемого файла.
А почему бы и нет?
Преподаватель как увидит 2000 строк кода, так сразу и поставит зачёт лишь за одно усердие
EducatedFool вне форума Ответить с цитированием
Старый 17.05.2009, 13:44   #3
kobolok
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 23
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение


А почему бы и нет?
Преподаватель как увидит 2000 строк кода, так сразу и поставит зачёт лишь за одно усердие
Я не учусь,для себя пишу парсер.Просто лень руками все перекапывать,вот и выбрал VB6 так как вроде говорят что он полегче для новичков.
Общий стаж в программировании уже более 7 часов,около 3 часов теории и более 4 часов ковыряния с кодом(перерывы на завтрак не включены)

Спасибо,сейчас попробую
kobolok вне форума Ответить с цитированием
Старый 17.05.2009, 13:46   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Общий стаж в программировании уже более 7 часов
При таком стаже у тебя получилась очень даже неплохая программа

А в чём здесь прикол: x = x + 1 If x > 9 Then
Во всех файлах нужные данные находятся именно в 9-й строке?
EducatedFool вне форума Ответить с цитированием
Старый 17.05.2009, 14:04   #5
kobolok
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 23
По умолчанию

Парсю результаты сканера:
This file was generated by Angry IP Scanner
Visit http://www.angryziber.com/ for the latest version


Scanned 89.146.74.1 - 89.146.74.255 (Ports: 4899)
17.05.2009 14:02:54

IP Ping Hostname Open Ports

89.146.74.136 1450 ms 89-146-74-136.extreme.sarkor.uz4899
(89.146.74.136 1450 ms и 89-146-74-136.extreme.sarkor.uz4899 в одной строке)
Убираю лишние верхние строки(шапку),далее выбираю 15 знаков слева от каждой строки так как максимально 255.255.255.255(то есть выбираю все ip адреса) и убираю пробелы,далее для составляю сроку для автозапуска Radmina,так по всем строкам.И в конце записываю всё в батник
kobolok вне форума Ответить с цитированием
Старый 17.05.2009, 14:11   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Убираю лишние верхние строки(шапку),далее выбираю 15 знаков слева от каждой строки
Немного неправильный подход...
А вдруг IP-адрес будет короче?
Например, попадётся такая строка:
89.16.74.36 1450 ms 89-146-74-136.extreme.sarkor.uz4899

Проверь:
Код:
    txt = "89.16.74.36 1450 ms 89-146-74-136.extreme.sarkor.uz4899"
    Debug.Print Replace(Left(txt, 15), " ", "")
В результате получишь 89.16.74.36145

Правильно будет так:
Код:
txt = "89.16.74.36 1450 ms 89-146-74-136.extreme.sarkor.uz4899"
    Debug.Print Split(Trim(txt), " ")(0)
Сначала обрезаем пробелы справа и слева функцией Trim
Потом разбиваем строку на массив функцией Split (разделитель - пробел)
И берём первый элемент этого массива (с индексом 0)- IP-адрес

То есть замени в коде строку MyText = Replace(Left(MyText, 15), " ", "")
на строку MyText = Split(Trim(MyText), " ")(0)
EducatedFool вне форума Ответить с цитированием
Старый 17.05.2009, 14:14   #7
kobolok
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 23
По умолчанию

Хм,ошибок не выдаёт,но и ничего не делает,в поле text5 вообще ничего не выводится
kobolok вне форума Ответить с цитированием
Старый 17.05.2009, 14:17   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Кстати, у меня есть готовый код на VB для преобразований доменноеИмя -> IP-адрес -> доменноеИмя, для пинга IP-адресов и т.д. и т.п. (в общем всё, что связано с работой с сетью из VB)

Есть код управления через Telnet различными устройствами (надо знать IP-адрес и номер порта устройства), так что при желании можно обойтись без батников и Radmin-а.

Так что, если надо будет, обращайся.
EducatedFool вне форума Ответить с цитированием
Старый 17.05.2009, 14:19   #9
kobolok
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 23
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Немного неправильный подход...
А вдруг IP-адрес будет короче?
Например, попадётся такая строка:
89.16.74.36 1450 ms 89-146-74-136.extreme.sarkor.uz4899
Здесь всё нормально,просто на форуме так отображается,там между IP и временем пинга 10-15 пробелов стоит,такой шаблон у него.Можно смело и 20 знаков брать(только незачем,там всё равно пробелы.
kobolok вне форума Ответить с цитированием
Старый 17.05.2009, 14:23   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Хм,ошибок не выдаёт,но и ничего не делает,в поле text5 вообще ничего не выводится
Ты просто не проверяешь текст строки, прежде чем начать обрезку этого текста.
Наверняка в каждом файле последняя строка - пустая.
Поэтому и поле оказывается пустым (ты просто не успеваешь увидеть, когда оно сотни раз заполняется, а видишь только результат для последней пустой строки файла)

Если есть Скайп - звони, помогу написать код.
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна помощь Caragius Паскаль, Turbo Pascal, PascalABC.NET 8 08.04.2010 17:29
помощь нужна Гаджи Паскаль, Turbo Pascal, PascalABC.NET 0 29.04.2009 20:05
Нужна помощь. freedom_fighter Помощь студентам 2 30.12.2008 23:52
Нужна помощь!!)) ТРОЯН=) Паскаль, Turbo Pascal, PascalABC.NET 2 29.12.2008 21:42
Нужна помощь!!! Anil Помощь студентам 0 04.12.2007 17:32