Автор
|
Тема: Проблемка
|
urik |
опубликован 01-02-2002 01:46 MSK
Короче, нужно обработать файл весом в 20 метров, так чтобы выделить все слова, разделенные пробелом и записать их в другой файл, по одному слову на строчку... Написал программу, но она виснет безнадежно, може кто подскажет работающий вариант?
|
Lamer
|
опубликован 02-02-2002 11:33 MSK
Ну, заочно могу сказать, что проблема точно не в размере файла! Я работал с куда более большими! Но чтение такого файла - очень длительный процесс! Может программа не зависла? Может она исправно делает своё дело? Единственный способ узнать зависла прога или нет - это нажать Ctrl+Break! |
7in
|
опубликован 02-02-2002 23:46 MSK
Option ExplicitConst ChSize = 4096 Private Sub CutWords(InFile As String, OutFile As String) Dim Ch(1 To ChSize) As Byte, S As String Dim i As Long Open InFile For Random Access Read As #1 Len = ChSize Open OutFile For Output As #2 While Not EOF(1) Get #1, , Ch For i = 1 To ChSize If Ch(i) = 32 Then If Len(S) > 0 Then Print #2, S S = "" Else S = S + Chr(Ch(i)) End If Next i Wend For i = Len(S) To 1 Step -1 If Mid(S, i, 1) <> Chr(0) Then Exit For Next i S = Left(S, i) If S <> "" Then Print #2, S Close #1 Close #2 End Sub
|
7in
|
опубликован 02-02-2002 23:47 MSK
В принципе, у меня одинаково работает (по времени) и ChSize = 1024, и 4096, и 32000... А вообще, ИМХО, если хочешь скорость, лучше выбери что-нибудь другое, а не VB... |
urik
|
опубликован 03-02-2002 01:24 MSK
Да мне не скорость нужна... А чтобы работала:) я и подождать могу:) |
vmj
|
опубликован 27-02-2002 02:33 MSK
Для получения массива слов разделенных пробелами класно работает функция: s() = Split(sStr, Space$(1)) С ее помощью помнится "причесал" текстовый вариант "Властелина колец" и ничего - не "захлебнулась" ... Правда каюсь - обрабатывал по абзацам. |