powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по процедурам
16 сообщений из 16, страница 1 из 1
Вопрос по процедурам
    #36984842
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В одной программе около 20 раз нужно открывать разные файлы и присваивать переменной значение последней строки .
Вот часть кода:

Код: plaintext
1.
2.
3.
4.
Open "адрес_по_которому_находим_файл\Название_файла.txt" For Input As # 1 
For i =  1  To n
If i=n then Line Input # 1 , peremenaja
Next i
Close # 1 

Хочу для этой и еще небольшой части кода, идущей перед и за данным куском кода написать процедуру, но возникла проблема: я не знаю как менять адрес файла. К примеру название файлов 1.txt, 2.txt, 3.txt, 4.txt, 5.txt и т.д..
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984904
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странный какой-то код, ну да ладно, допустим вы половину оттуда выкинули.

Код: plaintext
1.
2.
For i =  1  To  5 
  MyProcedure CStr(i)+".txt"
Next

Это вы имели ввиду?
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984911
SEOMR,
не хочется Вас расстраивать, но приведенный Вами код считаетывает в переменную peremenaja первую строку из файла.
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984916
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнемSEOMR,
не хочется Вас расстраивать, но приведенный Вами код считаетывает в переменную peremenaja первую строку из файла.
Там вообще весь цикл этот не нужен, но я на всякий случай предположил, что код урезанный и мы не видим всей его мощи и тонкости.
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984930
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, не это. В общем постараюсь объяснить более подробно:
За пример возьмем тот кусок кода:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub MyProcedure (n as Integer, ?????????)
Open "*адрес_файла\Имя_файла*.txt" For Input As # 1 
For i =  1  To n
If i=n then Line Input # 1 , peremenaja
Next i
Close # 1 
End Sub

*адрес_файла\Имя_файла* - то, что мне надо менять
????????????????? - тип переменной, с помощью которого это можно сделать.

Пытался сделать таким образом, но не сработало:
(Все файлы находятся в одной папке, поэтому отличаются только именем)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub MyProcedure (imya As String, n as integer)
Dim adress, peremenaja  as string
adress=Chr( 34 ) & "адрес_файла\" & imya & ".txt" & Chr( 34 )
Open adress For Input As # 1 
For i =  1  To n
If i=n then Line Input # 1 , peremenaja
Next i
Close # 1 
End Sub
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984931
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнемSEOMR,
не хочется Вас расстраивать, но приведенный Вами код считаетывает в переменную peremenaja первую строку из файла.

Вы меня не расстраиваете, я знаю, что она читает последнюю строку, а не первую, вбейте и сами проверьте.
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984933
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторТам вообще весь цикл этот не нужен, но я на всякий случай предположил, что код урезанный и мы не видим всей его мощи и тонкости.
Хотя с циклом программа итак шустро работает (проверял на файлах с миллионами строк), но за пример без цикла буду премного благодарен, то есть пример как вытянуть произвольную строку из файла.
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984934
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEOMRПытался сделать таким образом, но не сработало:

Не первый день на форуме, пора бы уже знать, что надо вообще-то указывать, что такое в вашем понимании "не сработало"

SEOMRВы меня не расстраиваете, я знаю, что она читает последнюю строку, а не первую, вбейте и сами проверьте.

Если у вас всего одна строка в файле, то таки да :)
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984936
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SEOMRавторТам вообще весь цикл этот не нужен, но я на всякий случай предположил, что код урезанный и мы не видим всей его мощи и тонкости.
Хотя с циклом программа итак шустро работает (проверял на файлах с миллионами строк), но за пример без цикла буду премного благодарен, то есть пример как вытянуть произвольную строку из файла.
В вашем конкретном примере цикл не делает ровным счетом ничего.
достаточно оставить только строку Line Input #1, peremenaja
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984948
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Премного извиняюсь с If затупил. Работаю сразу с двумя программами, взял случайно из другого кода.
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984951
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем если коротко, то как можно сделать так, чтобы из этого куска
Код: plaintext
Open "адрес_по_которому_находим_файл\Название_файла.txt" For Input As # 1 
можно было менять строку - "адрес_по_которому_находим_файл\Название_файла.txt"
К примеру вводить через Inputbox(), в общем нужно чтобы я мог из

F:\1.txt получить

F:\1.txt
F:\1.txt
F:\1.txt
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984952
SEOMR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Комп залагал((( сообщение опубликовалось без моего участия)

из F:\1.txt получить

F:\1.txt
F:\2.txt
F:\3.txt
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984954
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
Dim t As String
t = InputBox(...)
Open t For Input As # 1 

Лично я все еще не понимаю, в чем у вас проблема
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984955
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
For i =  1  To  5 
  Open CStr(i)+".txt" For Input As # 1 
  ...
  Close # 1 
Next
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984956
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема называется "Вопрос по процедурам"
Вы написали правдоподобную процедуру.
Что с ней не так - говорить не хотите
...
Рейтинг: 0 / 0
Вопрос по процедурам
    #36984961
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот так если?
TEST
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub Test()
' Это основной цикл - в нем будем делать имена файлов
    For i =  1  To  5 
        cFile$ = ActiveWorkbook.Path & "\" & CStr(i) & ".txt"
        If Dir(cFile) <> "" Then
            MsgBox (cFile & ":" & vbCrLf & LastLine(cFile))
        End If
    Next
End Sub

Function Max3(ByVal n1 As Long, ByVal n2 As Long, ByVal n3 As Long) As Long
' Это так, дополнение, - максимум из трех чисел
    n0& = IIf(n1 > n2, n1, n2)
    Max3 = IIf(n3 > n0, n3, n0)
End Function

Function LastLine(cFile As String) As String
' Здесь считываем всё содержимое файла и ищем последнюю строку в символьной переменной
' Да, я понимаю, что будет жрать ресурс для буфера
    Open cFile For Binary Access Read As # 1 
    cFileBuffer$ = Input( 10  ^  8 , # 1 )
    Close # 1 
    LastLine = Mid(cFileBuffer, Max3( 0 , InStrRev(cFileBuffer, vbCr), nStrRev(cFileBuffer, vbLf)) +  1 )
End Function
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по процедурам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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