Страница: 1 |
Страница: 1 |
Вопрос: Строки
Добавлено: 16.04.08 19:11
Автор вопроса: mrphn
Файл содержит строки допустим по 90 байт (+4 описание строки)
Как к примеру удалить 4 строку в файле и соответственно все последующие строки сместить на одну к началу файла.
Visual Basic 2008 Express Edition
Если можно пример кода. Буду весьма благодарен.
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Александр
Вопросов: 20
Ответов: 44
Профиль | | #1
Добавлено: 16.04.08 22:13
Нужно открыть файл в программе и обрабатывать как массив, сделать изменения, потом опять сохранить в этот файл. Если например хочешь удалить четвертую строку:
stroka(4).resettext
потом просто перебираешь весь остаток файла:
for i = "начальная строка" to "конечная строка"
stroka(i) = stroka(i+1)
next
если не разберешься, напишу пример!
Номер ответа: 2
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #2
Добавлено: 17.04.08 01:14
С массивами эт все лажа. На ВБ6 могу написать пример, как лучше сделать, на дотнете - вряд ли, не люблю его.
Номер ответа: 3
Автор ответа:
mrphn
Вопросов: 5
Ответов: 12
Профиль | | #3
Добавлено: 18.04.08 00:04
Да, будет круто если поделитесь примерами, но еще одно дополнение доступ к файлу - бинарный
Номер ответа: 4
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #4
Добавлено: 18.04.08 08:09
Эт не проблема если длина строк стабильно 94В.
Номер ответа: 5
Автор ответа:
mrphn
Вопросов: 5
Ответов: 12
Профиль | | #5
Добавлено: 18.04.08 13:08
стабильно)
Номер ответа: 6
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #6
Добавлено: 18.04.08 15:59
Const LENGTH As Integer = 94 + 2 ' строка + vbCrLf
Const SKIP_LINE As Integer = 4 ' строка, которую пропускаем
' <для тестинга>
'Open FILE For Output As #1
'For i = 1 To 5
' Print #1, String(94, CStr(i))
'Next
'Close
' </для тестинга>
Open FILE For Binary As #1
Dim FirstPart As String
Dim LastPart As String
' читаем из файла все до строки SKIP_LINE
FirstPart = Space(LENGTH * (SKIP_LINE - 1))
Get #1, , FirstPart
' читаем все после строки SKIP_LINE
Seek #1, LENGTH * (SKIP_LINE) + 1
LastPart = Space(LOF(1) - LENGTH * (SKIP_LINE))
Get #1, , LastPart
Close
' удаляем файл, ибо при бинарном режиме бейсик
' не затрет последнюю строку и не изменит размер файла
Kill FILE
Open FILE For Binary As #1
' пишем первую часть
Put #1, , FirstPart
' пишем вторуую часть
Put #1, , LastPart
Close
End
Номер ответа: 7
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #7
Добавлено: 18.04.08 17:09
Красиво. И на .Net это пойдёт также
Завидую, этож надо иметь свободное время в рабочее время
Кстати,,, ладно я, а тыто что повис на ВБ6 или это не единственный твой язык
Номер ответа: 8
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #8
Добавлено: 18.04.08 17:46
Вообще, далеко не единственный К тому же пишу компилятор бейсика новый щас.
Дотнет не люблю из-за классов. Так и работы для мозга не остается, когда можно всюду готовые классы подъюзать. А время на подобные примеры тратится максимум 4 минуты
Сорри за оффтоп, спросили - ответил.
Номер ответа: 9
Автор ответа:
mrphn
Вопросов: 5
Ответов: 12
Профиль | | #9
Добавлено: 21.04.08 23:00
Спасибо за пример! Шикарно!