| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > запись в текстовый файл.. |
| Автор: skulida 24.3.2003, 07:34 |
| Наверное, для программистов очень простой вопрос. Подскажите, пожалуйста как при работе с текстовым файлом организовать чтение и запись фрагмента текста, начинающегося определенным символом(&!) до окончания строки. Т.е. нужно записать фрагмент текста из одного файла в другой, причем вставить его в определенную строку после определенного символа. Причем количество символов до этой нужной строки неизвестно, т.е. оператор seek не подходит. Спасибо за отклик. поможет любая информация. так как сами мы не местные...:-) |
| Автор: valex13 25.3.2003, 13:55 |
| Открываешь файл 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 6.4.2003, 11:06 |
| lesco Спасибо за ответ. С этим я уже разобрался. Делаю это через объекты Scripting.FileSystemObject и Scripting.TextStream. Однако, это только часть задачи. Пока не пойму как можно вырезать не строки а блоки из нескольких строк, начинающихся определенными символами, а затем их (блоки) перемешать в произвольном порядке. Т.е. есть текстовый файл в котором несколько сот текстовых блоков, каждый их которых начинается сиволом &НАЗВ! и заканчивается &END!. Надо их перемешать, т.е. произвести ротацию в произвольном порядке. Как ? В той книге, что я читаю по бэйсику ниченго не написано про чтение блоков. Спасибо. |
| Автор: valex13 7.4.2003, 12:19 |
| Вот "классическая" процедура. Действуй: 'Функция обработчик строк. Вытягивает подстроку разделенную делителем 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 7.4.2003, 22:22 |
| valex13 Ага.. Спасибо. Сейчас буду пробовать. А как сортировать классически? |
| Автор: Loquacious 9.4.2003, 06:31 |
| Красота... надо попробовать.... |
| Автор: skulida 12.4.2003, 23:37 | ||
Так что-то мне и не удалось разобраться с этой функцией. Подскажите как ее вызвать после открытия исходного файла и с какими параметрами? |
| Автор: valex13 27.5.2003, 13:59 |
| Допустим у тебя есть строка следующего вида : str = "ппппппппппп оооооооо ооооооо ооооооооо дддддддд" & _ жжжж жжжжжж жжжжжж" Тебе необходимо разделить ее на части типа s1 = "ппппппппппп" и s2="ооооооооо" и т.д. Dim sOne As String sOne = GetToken(str," ") sTwo = GetToken(str," ") После чего str примет вид: str ="ооооооо ооооооооо дддддддд" & _ жжжж жжжжжж жжжжжж" Просто как грабли! |