Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись в текстовый файл.. 
:(
    Опции темы
skulida
Дата 24.3.2003, 07:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Наверное, для программистов очень простой вопрос.
Подскажите, пожалуйста как при работе с текстовым файлом организовать чтение и запись фрагмента текста, начинающегося определенным символом(&!) до окончания строки. Т.е. нужно записать фрагмент текста из одного файла в другой, причем вставить его в определенную строку после определенного символа. Причем количество символов до этой нужной строки неизвестно, т.е. оператор seek не подходит.
Спасибо за отклик. поможет любая информация. так как сами мы не местные...:-)
  Вверх
valex13
Дата 25.3.2003, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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
Все!

PM MAIL ICQ   Вверх
skulida
Дата 6.4.2003, 11:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











lesco
Спасибо за ответ.
С этим я уже разобрался.
Делаю это через объекты Scripting.FileSystemObject и Scripting.TextStream.
Однако, это только часть задачи. Пока не пойму как можно
вырезать не строки а блоки из нескольких строк, начинающихся определенными символами, а затем их (блоки) перемешать в произвольном порядке.
Т.е. есть текстовый файл в котором несколько сот текстовых блоков, каждый их которых начинается сиволом &НАЗВ! и заканчивается &END!. Надо их перемешать, т.е. произвести ротацию в произвольном порядке.
Как ?
В той книге, что я читаю по бэйсику ниченго не написано про чтение блоков.
Спасибо.
  Вверх
valex13
Дата 7.4.2003, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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
'Отрезаем кусок пирога smile.gif
GetToken = Trim$(Left$(sSource, iDelimPos - 1))
sSource = Mid$(sSource, iDelimPos + 1)
End If
End Function

PM MAIL ICQ   Вверх
skulda
Дата 7.4.2003, 22:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











valex13
Ага.. Спасибо. Сейчас буду пробовать.
А как сортировать классически?
  Вверх
Loquacious
Дата 9.4.2003, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 29.3.2003

Репутация: нет
Всего: нет



Красота... надо попробовать....


--------------------
is dead
PM MAIL   Вверх
skulida
Дата 12.4.2003, 23:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(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
'Отрезаем кусок пирога smile.gif
GetToken = Trim$(Left$(sSource, iDelimPos - 1))
sSource = Mid$(sSource, iDelimPos + 1)
End If
End Function

Так что-то мне и не удалось разобраться с этой функцией.
Подскажите как ее вызвать после открытия исходного файла и с какими параметрами?
  Вверх
valex13
Дата 27.5.2003, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 243
Регистрация: 29.1.2003
Где: Иркук. область, г . Иркутск

Репутация: 1
Всего: 1



Допустим у тебя есть строка следующего вида :
str = "ппппппппппп оооооооо ооооооо ооооооооо дддддддд" & _
жжжж жжжжжж жжжжжж"
Тебе необходимо разделить ее на части типа s1 = "ппппппппппп" и s2="ооооооооо" и т.д.
Dim sOne As String
sOne = GetToken(str," ")
sTwo = GetToken(str," ")
После чего str примет вид:
str ="ооооооо ооооооооо дддддддд" & _
жжжж жжжжжж жжжжжж"
Просто как грабли!



PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.