|
Чтение из текстового файла | ☑ | ||
---|---|---|---|---|
0
Kaukass
11.03.15
✎
12:40
|
Изучаю работу с файлами.
Нашел пример, на его основе сделал скелет будущей процедуры, а она как то странно работает - ничего не сообщает. Поставил точку останова в цикле, а до цикла то и не доходит. |
|||
1
Kaukass
11.03.15
✎
12:40
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика. ПоработатьСФайлом(); КонецПроцедуры Процедура ПоработатьСФайлом() Перем Стр; //Открываем диалог выбора файла для чтения ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ВыборФайла.МножественныйВыбор = Ложь; ВыборФайла.Заголовок = НСтр("ru = 'Выбор файла'"); ВыборФайла.Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'"); Если ВыборФайла.Выбрать() Тогда ПолноеИмяФайла = ВыборФайла.ПолноеИмяФайла; КонецЕсли; Текст = Новый ЧтениеТекста; Текст.Открыть(ПолноеИмяФайла); о = 1; Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки Стр = Текст.ПрочитатьСтроку(); Сообщить(Стр); о = о +1; Если Стр = Неопределено тогда Сообщить("Неопределено"); Иначе Сообщить(Стр); КонецЕсли; КонецЦикла; Текст.Закрыть(); КонецПроцедуры |
|||
2
kortun
11.03.15
✎
12:40
|
телепаты на отдыхе, давай код
|
|||
3
polosov
11.03.15
✎
12:41
|
А до цикла у тебя Стр = неопределено.
|
|||
4
kortun
11.03.15
✎
12:42
|
попробуй так
ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать("d:\sootp.csv"); Соответствие = Новый Соответствие; ВсегоСтрок = ТекстовыйДокумент.КоличествоСтрок(); Для НомерСтроки = 2 По ВсегоСтрок Цикл МассивПолей = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки), ";"); Соответствие.Вставить(СокрЛП(МассивПолей[0]), СокрЛП(МассивПолей[1])); КонецЦикла; |
|||
5
mistеr
11.03.15
✎
12:42
|
(0) Условие цикла неверное, вот и не доходит. В СП есть пример цикла по файлу.
|
|||
6
Kaukass
11.03.15
✎
12:44
|
Благодарю
|
|||
7
Kaukass
11.03.15
✎
12:44
|
Ща попробую
|
|||
8
Kaukass
11.03.15
✎
12:47
|
Это , наверное, такой пример - с двойным дном. Пока "взлетит", обучающийся еще много чему поучится :)
|
|||
9
Kaukass
11.03.15
✎
12:53
|
Инициировал переменную перед началом цикла
стр = Текст.ПрочитатьСтроку(); и тогда начался перебор файла. |
|||
10
kortun
11.03.15
✎
13:20
|
(8) с каким двойным дном? заменить путь к файлу и выдрать кусок текста ТекстовыйДокумент.ПолучитьСтроку(НомерСтроки) для получения строки - это уже сложно считается? О_о
|
|||
11
kortun
11.03.15
✎
13:20
|
+(10) а, еще удалить строку про соответствие
|
|||
12
Kaukass
11.03.15
✎
13:29
|
(10) - я имел в виду пример, который нашел на левом сайте. Там, где стр была неопределена до начала цикла. С твоим все пучком - спасибо.
|
|||
13
kortun
11.03.15
✎
13:33
|
(12) а, понятно, там вообще какой-то левый пример.
|
|||
14
Torquader
11.03.15
✎
14:00
|
Вообще-то, лучше сразу учиться читать построчно, чтобы потом не смотреть с грустным видом на сообщение "Нехватка памяти".
|
|||
15
kortun
11.03.15
✎
14:02
|
(14) ну это редкие случае совсем, я за 15 лет работы с таким не разу не пересекался.
|
|||
16
Torquader
11.03.15
✎
14:04
|
(15) Ну, файл на три гига очень маловероятно, что влезет в память целиком, а это - далеко не предел.
|
|||
17
Torquader
11.03.15
✎
14:06
|
Просто, в связи с переходом на клиент-сервер жрать память на сервере под весь файл как-то неразумно, особенно, если мы потом его читаем построчно (и не возвращаемся от конца к началу).
|
|||
18
D_E_S_131
11.03.15
✎
14:37
|
(17) kortun за свои "15 лет иммитации работы" не научился отличать ТекстовыйДокумент от ЧтениеТекста. Чего уж тут говорить...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |