![]() |
|
Модераторы: Akina |
![]()
|
|
| skulida |
|
|||
|
Unregistered |
Наверное, для программистов очень простой вопрос.
Подскажите, пожалуйста как при работе с текстовым файлом организовать чтение и запись фрагмента текста, начинающегося определенным символом(&!) до окончания строки. Т.е. нужно записать фрагмент текста из одного файла в другой, причем вставить его в определенную строку после определенного символа. Причем количество символов до этой нужной строки неизвестно, т.е. оператор seek не подходит. Спасибо за отклик. поможет любая информация. так как сами мы не местные...:-) |
|||
|
||||
| valex13 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 29.1.2003 Где: Иркук. область, г . Иркутск Репутация: 1 Всего: 1 |
Открываешь файл 1
Open vSourceFile For Output As #1 Открываешь файл 2 Open vOutpFile For Input As #2 Далее считываешь в массив текст из первого файла Незабудь массив сделать динамическим Например: Dim Data() As String Затем вычислишь размер vSourceFile и задай размер массива ReDim Data(0 To iSize) Перебирай массив и ищи нужный символ. Для этого может подойти следующая функция Dim iPos As Integer iPos = InStr(1, sSource, "*") Потом верезай нужную строчку и записывай во второй файл Print #2, sTemp Все! |
|||
|
||||
| skulida |
|
|||
|
Unregistered |
lesco
Спасибо за ответ. С этим я уже разобрался. Делаю это через объекты Scripting.FileSystemObject и Scripting.TextStream. Однако, это только часть задачи. Пока не пойму как можно вырезать не строки а блоки из нескольких строк, начинающихся определенными символами, а затем их (блоки) перемешать в произвольном порядке. Т.е. есть текстовый файл в котором несколько сот текстовых блоков, каждый их которых начинается сиволом &НАЗВ! и заканчивается &END!. Надо их перемешать, т.е. произвести ротацию в произвольном порядке. Как ? В той книге, что я читаю по бэйсику ниченго не написано про чтение блоков. Спасибо. |
|||
|
||||
| valex13 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 29.1.2003 Где: Иркук. область, г . Иркутск Репутация: 1 Всего: 1 |
Вот "классическая" процедура. Действуй:
'Функция обработчик строк. Вытягивает подстроку разделенную делителем sDelim Function GetToken(sSource As String, ByVal sDelim As String) _ As String Dim iDelimPos As Integer 'Найдем первый делитель iDelimPos = InStr(1, sSource, sDelim) 'Если делитель не найден, возвращаем строку и sSource как пустую If (iDelimPos = 0) Then GetToken = Trim$(sSource) sSource = "" Else 'Отрезаем кусок пирога GetToken = Trim$(Left$(sSource, iDelimPos - 1)) sSource = Mid$(sSource, iDelimPos + 1) End If End Function |
|||
|
||||
| skulda |
|
|||
|
Unregistered |
valex13
Ага.. Спасибо. Сейчас буду пробовать. А как сортировать классически? |
|||
|
||||
| Loquacious |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 29.3.2003 Репутация: нет Всего: нет |
Красота... надо попробовать....
-------------------- is dead |
|||
|
||||
| skulida |
|
|||
|
Unregistered |
Так что-то мне и не удалось разобраться с этой функцией. Подскажите как ее вызвать после открытия исходного файла и с какими параметрами? |
|||
|
||||
| valex13 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 29.1.2003 Где: Иркук. область, г . Иркутск Репутация: 1 Всего: 1 |
Допустим у тебя есть строка следующего вида :
str = "ппппппппппп оооооооо ооооооо ооооооооо дддддддд" & _ жжжж жжжжжж жжжжжж" Тебе необходимо разделить ее на части типа s1 = "ппппппппппп" и s2="ооооооооо" и т.д. Dim sOne As String sOne = GetToken(str," ") sTwo = GetToken(str," ") После чего str примет вид: str ="ооооооо ооооооооо дддддддд" & _ жжжж жжжжжж жжжжжж" Просто как грабли! |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |