|
v7: Можно как-то спозиционироваться на нужной начальной строке поумнее чем в сабже? | ☑ | ||
---|---|---|---|---|
0
palpetrovich
02.07.15
✎
15:26
|
кодик:
fso = СоздатьОбъект("Scripting.FileSystemObject"); TextStream = fso.OpenTextFile(ИмяФайла, 1, 0, 0); Пока TextStream.AtEndOfStream=0 Цикл Если НачСтрока > TextStream.Line Тогда TextStream.SkipLine(); КонецЕсли; стр = TextStream.ReadLine(); // ну наконец-то :) зы: не то что-б сильно критично, но мало-ли, может я тупо не нашел какого-то метода типа TextStream.GoToLine(НачСтрока) |
|||
1
palpetrovich
02.07.15
✎
15:27
|
* прошу прощения, "саюже" читать как "саБже" :)
|
|||
2
aka AMIGO
02.07.15
✎
15:28
|
(1) исправленному верить :)
|
|||
3
aka AMIGO
02.07.15
✎
15:30
|
(0) файл текстовый?
|
|||
4
Господин ПЖ
02.07.15
✎
15:31
|
читай через ado
|
|||
5
aka AMIGO
02.07.15
✎
15:32
|
(4) а читать, как текст - сложнее?
|
|||
6
Господин ПЖ
02.07.15
✎
15:34
|
(5) может товарищ в клюшках сидит.
тамошний "читатель текстов" кривой как сабля турецкая |
|||
7
aka AMIGO
02.07.15
✎
15:36
|
(6) так секция заявлена однозначно, 7.7
а у меня нормально текст читается, сбоев не было ни одного.. |
|||
8
palpetrovich
02.07.15
✎
15:36
|
(3) ну да, (5) медленнее
(6) в них |
|||
9
Попытка1С
02.07.15
✎
15:36
|
(6) Ну как бы СоздатьОбъект уже говорит о клюшках.
|
|||
10
palpetrovich
02.07.15
✎
15:38
|
ну, как я понял, искомого метода таки нет?
|
|||
11
cdiamond
02.07.15
✎
15:40
|
(10) ну сам рассуди - позиционироваться в потоке в нужную запись легко когда длина записи фиксированная, а тут строки переменной длины
|
|||
12
18_plus
02.07.15
✎
15:40
|
(10) не, с текстом последовательный доступ.
прямой возможен при работе как с двоичным файлом, но нужно знать смещение :) |
|||
13
aka AMIGO
02.07.15
✎
15:40
|
(10) ;-/ я не знаю, а метод в сабже - быстрый..
|
|||
14
Господин ПЖ
02.07.15
✎
15:40
|
(10) открой msdn и посмотри
|
|||
15
palpetrovich
02.07.15
✎
15:46
|
поянтно, спасибо
зы: файл на сей мрмент порядка 100 мб, строк порядка 700000, формируется около 30 секунд ...если учесть что это для кероводства, типа смотреть кто что когда :) |
|||
16
Злопчинский
02.07.15
✎
18:12
|
а тупо всякими обработчиками втянуть через драйвера в ДБФ (если строки не сильно длинные). а в ДБФ - полято уже фиксированной длины...
|
|||
17
Fedor-1971
02.07.15
✎
18:35
|
(10) Попробуй SkipLine(5) - пропуск 5-ти строк, вроде прокатывало. Как мене помнится в FSO строка считается по \n
|
|||
18
vcv
03.07.15
✎
07:13
|
Если файл создаётся один раз, а нужен многократно, или только дописывается, как, например, журнал регистрации, можно вести индекс. Еще один файл, в котором каждые N байт будут смещением до соответствующей строки.
|
|||
19
palpetrovich
03.07.15
✎
09:04
|
(17) TextStream.SkipLine(5); Неверное число параметров
это Skip(5) можно, причем 5 - число символов (18) речь именно за журнал регистрации, индекс конечно ввел. такой вот: Дата:НомерСтрокиВЖурнале, НачСтрока именно по нему ищется |
|||
20
Fedor-1971
03.07.15
✎
09:52
|
(19) уточнил в хелпе предагается вот такой код:
var i; for (i = 0; i < 5; i++) stdin.SkipLine(); так что, вряд ли есть что-то более продвинутое. Попробуй ReadAll() - получишь строку и с ней работай. С файлами больше 300мб выигрыш в скорости практически незаметен. |
|||
21
Mikeware
03.07.15
✎
09:58
|
(19) так введи не НачСтрока, а номер символа.
На символ позиционируйся, а от него уже читай строками... Хотя лучше как сказали выше - перегонять текстовый файл в формат любой БД (дбф, файрбепрд, скл), и уже там работать |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |