Имя: Пароль:
1C
 
Чем быстрее считать текстовый файл?
Ø
0 Vaicartana
 
27.08.05
07:01
Нужно считать содержимое тектовика в некоторую переменную.
Файл достаточно большой (2-4 мега), стандартный объект "Текст" считывает построчно и очень долго.
Может есть что нибудь из непобедимого VBScript'a?
1 LOSS
 
27.08.05
07:14
активмд. но тож фигня
2 Guk
 
27.08.05
08:12
(0) В своё время Dolter выкладывал быстрый текстовый обмен. Сам не не использовал. Мне V7Plus хватает. Работает быстро...
3 ondul
 
27.08.05
08:34
(0) - Очень быстро обрабатываются текстовики с количеством строк около 1000-2000 (оптимум) - по 20-60 кБайт. Я сделал выгрузку в выделенную дирректорию "C:\obmen\", в файлы c инкрементом имени, типа spr00001.txt-spr99999.txt, нарезанные по заданному количеству строк, тогда запись\чтение происходит очень быстро и нет сомнения в использовании текстового формата при обмене c последующим считыванием, за исключением строк, содержащих спец-символы - символ переноса строк.... - такие, при выгрузке, приходится заменять на отличительный признак, с последующим восстановлением при считывании...
Скорость обмена возрастает в сотни раз!
Количество файлов в дирректории обмена получается большим, при начале процедуры их все приходится уничтожать, но этот процесс в 1С проходит очень быстро. Таким образом можно чрезвычайно быстро делать выгрузку\загрузку информации с суммарным объемом текстовых файлов в 10-ки мегабайт. После попыток, как в (0), работать с одиночным текстовым файлом гигантского размера, в это было трудно поверить, - всё летает!!!
Может быть есть другие методы, но этот - меня полностью устроил.
4 alexey galkin
 
27.08.05
10:25
(0) если что, есть такая компонента binfiles.dll
сделал только что обработку, читает текстовый файл в строковую переменную 9,6 мегабайта (лог сквида) за 6 секунд. записывает его обратно в файл за 1 секунду
5 ondul
 
27.08.05
10:44
(4) -
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=143&lid=3794
- это она самая - компонента?
6 alexey galkin
 
27.08.05
10:58
(5) именно та
7 Vaicartana
 
29.08.05
04:35
2 (4) длл-ка эт конечно хорошо, а без длл-ки никак низя?
Ну неужели могучий VBScripting не умеет читать такие файлы?
Знатоки VB, выручайте!
8 MetaEditor
 
29.08.05
05:56
а что конкретно нужно делать с файлом, читать, писать?
для примера
fso = CreateObject("Scripting.FileSystemObject");
tf = fso.OpenTextFile("d:\testfile.txt",1);
lc = 0;
a = _GetPerformanceCounter();
while tf.AtEndOfStream = 0 do
  s = tf.ReadLine();
  lc = lc+1;
EndDo;
Message(_GetPerformanceCounter() - a);
Message(lc);
простой перебор строк файла в 71 метр (полтора милиона строк) за 30 секунд
9 smaharbA
 
29.08.05
07:17
(7) если тебе надо поиск в журнале, можно добавить в (8)
set f=fso.getfile("d:\testfile.txt")
fsize=f.size
...
skip a
....
RL=ft.ReadLine
RL=ft.ReadLine
If (Тут нахождение даты и времени) Then
Exit Function //Или чтото в этом роде
End If
If ДатаИзСтроки>Нужной and ВремяИзСтроки>Нужного Then
a=a/2
Else
a=fsize-a/2
End If
...
Ну гдето так, если надо точнее, напишу, как не лень будет
10 Vaicartana
 
31.08.05
12:27
2 (8) нужно быстрое чтение файла.
Возможно поиск внутри файла.
Твой пример попробую, посмотрим как он с длл-кой (5) посоревнуется.