Имя: Пароль:
1C
1С v8
построчное чтение текстового файла
0 abbas
 
09.07.12
13:44
построчное чтение текстового файла в 8.1
Есть файл в котором много строк, но мне нужны только некоторые, как я могу это реализовать, с помощью чего, подскажите плс...
1 DrShad
 
09.07.12
13:47
Текст.ПолучитьСтроку()
2 izekia
 
09.07.12
13:47
по какому-то шаблону?
3 izekia
 
09.07.12
13:47
или просто по номеру?
4 abbas
 
09.07.12
13:51
По названию продан, там есть данный статус "Продан", и после него еще пару строк...
А если нужно по символам?
5 izekia
 
09.07.12
13:52
просто можно текст в регулярку и выбрать нужные строки
6 abbas
 
09.07.12
13:53
это как "в регулярку"
7 izekia
 
09.07.12
13:55
использовать регулярные выражения ...
8 abbas
 
09.07.12
14:00
а на примере можно, просто я не сталкивался с регулярными выражениями...
9 izekia
 
09.07.12
14:01
ты образец текста дай и что тебе нужно выбирать
10 abbas
 
09.07.12
14:04
Путь =  ИмяФайла;
     Текст = Новый ЧтениеТекста(Путь);
     Стр = Текст.ПрочитатьСтроку();
     Пока Стр <> Неопределено Цикл
           Стр = Текст.ПрочитатьСтроку();
           Если НайтиЗ(Стр,"Продан") Тогда
               Сообщить(Стр);
           КонецЕсли;    
     КонецЦикла;
11 izekia
 
09.07.12
14:05
а этот вариант у тебя работает?
12 Reset
 
09.07.12
14:05
(10) Первую строку алгоритм пропустит
13 abbas
 
09.07.12
14:07
Если НайтиЗ(Стр,"Продан") Тогда
это я забыл закоментить, сорри
14 abbas
 
09.07.12
14:19
(11) так что там?
15 izekia
 
09.07.12
14:22
(14) этот вариант у тебя работает?
16 prosto-nik
 
09.07.12
14:26
(15/ Вас седня явно игнорируют((()
17 abbas
 
09.07.12
14:28
(16)=) У меня такое чувство...=(
18 izekia
 
09.07.12
14:28
лол
19 prosto-nik
 
09.07.12
14:30
(17) я говорил что Вы игнорируете (15) который наверное хочет Вам помочь, да?
20 WF72
 
09.07.12
14:40
а откуда такой извращенный вариант чтения теста? почему бы не проще:
ТекстовыйДокумент = Новый ТекстовыйДокумент;
Попытка
   ТекстовыйДокумент.Прочитать(ИмяФайла);
Исключение
   Сообщить("Ошибка открытия файла!");
   Возврат;
КонецПопытки;
   
Для ТекСтрока = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
   //...
КонецЦикла;
21 abbas
 
09.07.12
14:41
хаха
     Путь =  ИмяФайла;
     Текст = Новый ТекстовыйДокумент;
     Текст.Прочитать(Путь);
     Сообщить(Текст.КоличествоСтрок());
     Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
         Стр= Текст.ПолучитьСтроку(НомерСтроки);
             Если Не ПустаяСтрока(Найти(Стр,"Продан")) Тогда
                   Сообщить(Стр);
             КонецЕсли;
     КонецЦикла;
22 WF72
 
09.07.12
14:41
*текста, в смысле :)
23 abbas
 
09.07.12
14:41
вот только он мне все выдает а не ту строчку которую хочу
24 Sammo
 
09.07.12
14:42
(20) Скорость и размер памяти.
Попробуй прочитать текстовый документ в несколько сотен мегабайт в текстовый документ и посмотри - что получится...

Чтение/запись текста работает по скорости сравнимо с fso
25 WF72
 
09.07.12
14:43
Сообщить(НомерСтроки), не?
26 abbas
 
09.07.12
14:45
(25)нет, он выдает с 1 до 1283, количество строк в тексте
27 izekia
 
09.07.12
14:55
Текст = Новый ЧтениеТекста(ИмяФайла);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
   Если Найти(Стр,"Продан") > 0 Тогда
       Сообщить(Стр);
   КонецЕсли;
   Стр = Текст.ПрочитатьСтроку();
КонецЦикла;
28 abbas
 
09.07.12
15:02
Пасиб, а вот еще такой интерес, а если я хочу чтоб не по одной строчки выходило а по две или по три, как мне это сделать?
29 izekia
 
09.07.12
15:23
(28) следующие две или три после строки с "продан"?
30 abbas
 
09.07.12
15:44
(29)да
31 izekia
 
09.07.12
16:09
Текст = Новый ЧтениеТекста(ИмяФайла);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
   Если Найти(Стр,"Продан") > 0 Тогда
       Сообщить(Стр);
       Стр = Текст.ПрочитатьСтроку();
       Если Стр <> Неопределено Тогда
           Сообщить(Стр);
       Иначе
           Прервать;
       КонецЕсли;
       Стр = Текст.ПрочитатьСтроку();
       Если Стр <> Неопределено Тогда
           Сообщить(Стр);
       Иначе
           Прервать;
       КонецЕсли;
   КонецЕсли;
   Стр = Текст.ПрочитатьСтроку();
КонецЦикла;