Страницы: 1
RSS
Обработка текстовых файлов
 
Есть некие файлы, содержащие ряд цифр (строк может быть больше 65 536). Поэтому для их обработки использую, к примеру, OPEN 1.txt for input as #1 и далее через INPUT построчно обрабатываю весь файл. Проблема в том, что первые строчки файла содержат служебную информацию (грубо говоря абракадабра, набор символов), которые могут содержать и символы 26 (признак конца файла). через INPUT добираюсь я до этого символа, а дальше - никак :(((
 
ну, значит файлы не такие уж и текстовые ;-)))  
 
А что, обрабатывать их строго Excel/VBA - обязательное условие? я бы предложил написать на любом нормальном ЯП модуль, который будет делать конвертацию данных или хотя бы, удаление заголовка.
 
Можно попробовать использовать FileSystemObject для чтения всего файла полностью в строковую переменную. Думаю, что полученную строку будет не сложно анализировать (да, и кстати, файл прочтется очень быстро, за одно обращение к диску):  
 
Sub nnn()  
   Dim s As String, fs As Object, a As Object  
   With Application.FileDialog(msoFileDialogFilePicker)  
       .AllowMultiSelect = False  
       If .Show = False Then Exit Sub  
       f = .SelectedItems(1)  
   End With  
     
   Set fs = CreateObject("Scripting.FileSystemObject")  
   Set a = fs.OpenTextFile(f)  
   s = a.readall  
   a.Close  
   Debug.Print Len(s)  
   'строка s содержит все байты всего файла (до 2^31 байт, т.е до ~2.1Гб)  
End Sub
 
Спасибо за помощь. Буду пробовать. Вариант genyaa более предпочтителен, т.к. в другими языками по долгу работы не особо и напользуешься (низзя   :))  ). А файлы текстовые, примерно такого содеражания:  
...  
1015288401=5  
1018198401=2004313938  
1018199781=99729120  
1018809801=36518086  
1020209801=1158878499  
...  
Просто у них в начале цифровая подпись (та самая абракадабра), которая всю картину портит. Если бы нужно было один файл обработать, можно было бы через поиск-замену удалить символы 26 и дальше все как по плану. Но как правило таких файликов 100-200. Пока по одному переберешь...   :(    
В общем еще раз огромное спасибо за помощь, буду пробовать  :)
 
ну, если устроит вариант genyaa - то это хорошо!  
 
к слову, есть утилиты, которые позволят заменить символы не в одном файл - а сразу в группе (по маске). я уже долгие годы использую BR.COM (размер программы 622 БАЙТА!)  
 Byte's Replace; Copyright © 1995 by O'Razoff. V 1.2  
это в том случае, если Вы решите всё же, что Вам нужно символ с кодом 26 (0x1A) заменить на что-нибудь...  
 
Кстати, genyaa - я позволил себе цитировать Ваш код на жругом форуме ( http://forum.developing.ru )? думаю, что Вы не будете на меня в обиде?...
 
{quote}{login=Serge}{date=29.11.2007 12:44}{thema=}{post}Кстати, genyaa - я позволил себе цитировать Ваш код на жругом форуме ( http://forum.developing.ru )? думаю, что Вы не будете на меня в обиде?...{/post}{/quote}  
Не буду, конечно... тем более, что что-то подобное там уже мелькало, если мне не изменяет память.
 
Решил поискать утилиту, подсказанную Serge, тем более что штука очень полезная. Именно ее не нашел, нашел другую:  
http://www.fauland.com/dl967com/af9v12.exe  
все лаконично, практично...  :)
 
ок. спасибо. посмотрим на вашу A.F.9 Replace some bytes 1.2...  
______________________________________________________  
 
в приложении  
Byte's Replace; Copyright © 1995 by O'Razoff. V 1.2  
1.3 кб включая документацию  
 
от себя добавлю, что    
1) копии файлов перед заменой никогда не помешают ;))  
2) иногда замечал за ней, что она не удаляет временные файлы, которые она же и создаёт (` в расширении).    
А потом она не сработает, если эти файлы есть, а утилиту запустить повторно...
Страницы: 1
Читают тему
Наверх