Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
'Отрезаем кусок пирога smile.gif
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 @ 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
Допустим у тебя есть строка следующего вида :
str = "ппппппппппп оооооооо ооооооо ооооооооо дддддддд" & _
жжжж жжжжжж жжжжжж"
Тебе необходимо разделить ее на части типа s1 = "ппппппппппп" и s2="ооооооооо" и т.д.
Dim sOne As String
sOne = GetToken(str," ")
sTwo = GetToken(str," ")
После чего str примет вид:
str ="ооооооо ооооооооо дддддддд" & _
жжжж жжжжжж жжжжжж"
Просто как грабли!



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)