Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Как в VB считать определенную строку из файла? Добавлено: 09.02.08 12:13  

Автор вопроса:  Алексей | Web-сайт: www.supprint.ru | ICQ: 282466278 
Здравствуйте!
Есть HTML файлы из которых нужно считать определенные строки (скажем, строку 86 или 92). Как это сделать, чтобы не открывать весь файл, а получить доступ именно к этим строкам? Да, и как потом сохранить измененные строки в этот же файл, опять же без перечтения всего файла? Заранее, спасибо!

Ответить

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

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



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #1
Добавлено: 09.02.08 21:20
А как программа узнает где начинается 86 строка? Я думаю до 92 строки придется построчно считывать файл.. наверное...

Ответить

Номер ответа: 2
Автор ответа:
 nguufxm6bo



Вопросов: 0
Ответов: 27
 Профиль | | #2 Добавлено: 10.02.08 00:18
Не открывая файл - не получится.
Открыть файл и прочитать конкретную строку - для этого надо знать смещение первого символа строки и ее длину.

Ответить

Номер ответа: 3
Автор ответа:
 Алексей



ICQ: 282466278 

Вопросов: 3
Ответов: 11
 Web-сайт: www.supprint.ru
 Профиль | | #3
Добавлено: 10.02.08 11:35
Наверное, я не так объяснил. Просто для меня вся эта процедура выглядит следующим образом:
OPEN "Filename" FOR INPUT AS #1
LINE INPUT #1, TxtStr01
LINE INPUT #1, TxtStr02
LINE INPUT #1, TxtStr03
... и так далее.
Неужели нет более простого способа достигнуть сразу нужной строки?

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 10.02.08 14:32
Как программа узнает, ГДЕ начинается нужная строка, если не будет построчно считывать файл? Если сделать строки в файле одинаковой длины, то можно будет загружать определенные байты

Ответить

Номер ответа: 5
Автор ответа:
 Алексей



ICQ: 282466278 

Вопросов: 3
Ответов: 11
 Web-сайт: www.supprint.ru
 Профиль | | #5
Добавлено: 10.02.08 14:47
Спасибо на этом!

Ответить

Номер ответа: 6
Автор ответа:
 AleXProg



Вопросов: 10
Ответов: 29
 Профиль | | #6 Добавлено: 11.02.08 09:15
А если попробовать так:

Dim St as String 'Строка
Dim N as Integer 'Номер нужной строки
For i = 1 to N
Input #1, St
next i

Ответить

Номер ответа: 7
Автор ответа:
 Алексей



ICQ: 282466278 

Вопросов: 3
Ответов: 11
 Web-сайт: www.supprint.ru
 Профиль | | #7
Добавлено: 11.02.08 09:32
To AleXProg: а можно пококретнее? Чего-то не догоню. Конкретный пример.

Ответить

Номер ответа: 8
Автор ответа:
 AleXProg



Вопросов: 10
Ответов: 29
 Профиль | | #8 Добавлено: 11.02.08 09:43

Private Sub Form_Load()
Dim St As String
Dim N As Integer
N = 92 'Или номер нужной строки
OPEN "Filename" FOR INPUT AS #1
For i = 1 to N
LINE INPUT #1, St
Next i
'В переменной St записана нужная строка
Close #1
End Sub

Ответить

Номер ответа: 9
Автор ответа:
 Алексей



ICQ: 282466278 

Вопросов: 3
Ответов: 11
 Web-сайт: www.supprint.ru
 Профиль | | #9
Добавлено: 11.02.08 09:48
To AleXProg: большое спасибо! Попробовал, и все окей! Только еще одна проблема осталась. Просто есть файлы, в которых нужно заменять переодически строки, а строки в каждом файле разбросаны по разному и сохранять только измененные строки, чтобы структура оставалась той же. Например: считать и заменить строку номер 10 на что-то свое и сохранить изменения. Буду тебе очень благодарен, если сможешь прислать небольшой пример такой проги!

Ответить

Номер ответа: 10
Автор ответа:
 AleXProg



Вопросов: 10
Ответов: 29
 Профиль | | #10 Добавлено: 13.02.08 08:55

Dim StM(1 To 1000000) As String, St As String, N As Integer, NewSt As String, IsR As Boolean, Sh As Long
Private Sub Command1_Click()
N = 10 'Íîìåð çàìåíÿåìîé ñòðîêè
NewSt = "New String" 'Íîâàÿ ñòðîêà
IsR = True
Sh = 0
On Error GoTo 1
Open "C:\1.txt" For Input As #1
Do
DoEvents
Sh = Sh + 1
Line Input #1, StM(Sh)
Loop While IsR
1
Close #1
Open "C:\1.txt" For Output As 1
For i = 1 To Sh
If i = N Then
Print #1, NewSt
Else
Print #1, StM(i)
End If
Next i
Close #1
End Sub

Возможны глюки! Но у меня работает. Возможно, слишком мудрёно, можешь попробовать сам подъисправить

Ответить

Номер ответа: 11
Автор ответа:
 AleXProg



Вопросов: 10
Ответов: 29
 Профиль | | #11 Добавлено: 13.02.08 09:00
N = 10 - это номер заменяемой строки;
NewSt - это заменяемая строка;
Удачи!

Ответить

Номер ответа: 12
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #12 Добавлено: 13.02.08 14:16
Можно предварительно рассчитать смещение каждой стркои в файле и отдельно сохранить.

Разумеется, при изменнеии файла каждый раз нужно будет эту таблицу перерасчитывать, зато вот скорость получения строки по ее индексу возрастет во много раз.

Ответить

Номер ответа: 13
Автор ответа:
 Алексей



ICQ: 282466278 

Вопросов: 3
Ответов: 11
 Web-сайт: www.supprint.ru
 Профиль | | #13
Добавлено: 16.02.08 11:19
Спасибо всем за помощь!

Ответить

Страница: 1 |

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



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