ТекстовыйДокумент, ЗаписьТекста - при записи добавляет ВК+ПС в конец файла. #759087


#0 by areaho0ray
Добрый день! Сижу, колдую над записью текста в 8.3. При записи текста в файл добавляет строку в конец файла вида Символы.ВК + Символы.ПС, т.е. просто вставляет разделитель. В общем, вот такой код:     Текст.Записать("C:ANSI.TXT", КодировкаТекста.ANSI); По логике в файле должна быть одна строка, но зайдя любым блокнотом в файл видно 2 строки. При этом, если файл прочитать методом Прочитать, а потом глянуть сколько в тексте строк - все будет нормально, то есть 1Ска считает, что все гуд. Собственно сам вопрос - кто сталкивался? Как лечить?
#1 by Горогуля
>По логике в файле должна быть одна строка там и есть одна строка
#2 by areaho0ray
Читайте дальше.
#3 by Мэс33
Все верно.
#4 by Горогуля
готово
#5 by Мэс33
Различные операционные системы придерживаются своего представления перевода строки и конца файла. В DOS и Windows перевод строки кодируется последовательностью двух символов: CR и LF.
#6 by areaho0ray
То есть, с помощью средств 1С нормально текст в файл не записать - она будет постоянно дописывать разделитель в конец файла?
#7 by Горогуля
с помощью средств 1С нормально текст в файл записать
#8 by areaho0ray
Большое спасибо за Ваше развернутое объяснение.
#9 by Горогуля
да не за что
#10 by Мэс33
Эх, умеете вы все доходчиво объяснять.
#11 by Горогуля
у меня на три слова больше, чем в получилось ;)
#12 by Мэс33
А по сути - если не нужны символы конца строки и перевода каретки, то открывай файл в бинарном виде и выкусывай последние байты )))). Правда потом любой текстовый редактор опять проставит эти символы.
#13 by Провинциальный 1сник
Под "текстом" 1с понимает набор строк из минимум одной строки символов(возможно пустой). Каждая строка обязательно заканчивается символами конца строки. Не любой. В фаре редактор сам не добавляет перевод строки, если не нажимать Enter.
#14 by User_Agronom
Скоро автор узнает про символ  EOF - вот это будет приключение!
#15 by Горогуля
ну положим, не обязательно заканчивается переводом...
#16 by Провинциальный 1сник
Самая большая проблема этого плана - невозможность в 1с без внешних костылей работать с двоичными данными. Казалось бы, чего проще - сделать у объекта ДвоичныеДанные возможность обратиться к произвольному байту через [] и пару дополнительных методов (Вырезать,Вставить). Но не хотят, редиски..
#17 by areaho0ray
Не знаю таких редакторов, даже notepad виндовый не проставит, если Enter не нажать. К сожалению, EOF != EOLN, и в 1С нет возможности с ними работать.
#18 by User_Agronom
Извини, но тема ни о чём: 1С-ка файл записыват, файл читает и, кроме того, читает то, что записала и как записала. А есть ли в последней строке комбинация EOL+CR не существенно.
#19 by Мэс33
Даже если открыть в режиме редактирования и сохранить?
#20 by Провинциальный 1сник
Иногда существенно, если например нужно создавать unix-текст.
#22 by areaho0ray
Очень даже существенно, ибо это пустая строка, а так как мне надо сохранить все как .CSV и дальше файл будет обрабатываться в другой системе, то последняя пустая строка все испортит. Да, именно так.
#23 by Мэс33
Что за другая система, если не секрет? Эта другая система не понимает CR+LF?
#24 by areaho0ray
Что бы закрыть что-нибудь, надо вначале это что-нибудь открыть :) Нет такого метода.
#25 by areaho0ray
Нет, она-то как раз-таки и понимает, и не хочет пустую строку отсеивать.
#26 by mehfk
Тупишь?
#27 by User_Agronom
текстовые файлы одинаково прекрасно открываются как в глюкавой поделке Гейстса, так и в *nix системах, независимо от того, где созданы. Текст, он и в АФрике текст.
#28 by areaho0ray
Товарищ, я действительно туплю, большое вам спасибо, помогло!
#29 by Мэс33
И теперь нет пустой строки?
#30 by areaho0ray
Можете мне не верить - но нет.
#31 by Мэс33
Отчего же? Верю. Просто с такой задачей не сталкивался. А сопряженные системы легко понимали csv с пустой строкой в конце.
#32 by Провинциальный 1сник
Нет. У многих программ в линуксе ini-файлы не работают, если созданы в дос-тексте с cr+lf. Или программы на всяких скриптовых языках типа perl.
#33 by areaho0ray
Ну тут вопрос не к ОС, а к среде исполнения этого самого ini файла.
#34 by George Wheels
Текст.УстановитьТекст("любой текст") не добавляет разделители, но неудобно в этот файл что-то дописывать.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С