Имя: Пароль:
1C
1C 7.7
v7: Запись текста через объект "Текст"
,
0 Chesnok
 
16.01.20
19:06
Всем привет.

Проблема такая: читаю один текстовый файл и пишу в другой. В этом другом файле все строки разделены пустой строкой с двумя пробелами. Что за такое?

Текст1 = СоздатьОбъект("Текст");
Текст1.Открыть(ИсходныйФайл);

Текст2 = СоздатьОбъект("Текст");
Для А = 1 По Текст1.КоличествоСтрок() Цикл
   Текст2.ДобавитьСтроку(Текст1.ПолучитьСтроку(А));
КонецЦикла;
Текст2.Записать(НовыйФайл);
1 Ns33
 
16.01.20
19:27
Ну ДобавитьСтроку добавляет строку и символ переноса строки в конец, вот и получается двойной перенос.
2 MWWRuza
 
гуру
16.01.20
19:40
Попробуйте, возможно поможет: Текст2.ДобавитьСтроку(СокрЛП(Текст1.ПолучитьСтроку(А)));
3 Chesnok
 
17.01.20
10:59
(1) До сих пор неоднократно пользовался этим методом и ничего лишнего не добавлялось.
Разница только в том, что здесь записывается строка, которая была считана из файла.
4 8 bit
 
17.01.20
11:23
Если просто скопировать текстовый файло надо, то не проще через:
КомандаСистемы("COPY " + ИсходныйФайл + " " + НовыйФайл);
5 Kigo_Kigo
 
17.01.20
11:27
(4) ТОоесть
КопироватьФайл(<?>,,);
Синтаксис:
КопироватьФайл(<ИмяФайлаИсточника>,<ИмяФайлаПриемника>,<ФлагПерезаписи>)
Назначение:
Копирует файл.
Параметры:
<ИмяФайлаИсточника> - строка с именем файла источника;
<ИмяФайлаПриемника> - строка с именем файла приемника;
<ФлагПерезаписи> -:
  0 - существующий файл приемника перезаписать;
  1 - существующий файл приемника не перезаписывать.

уже не катит? :)
6 Chesnok
 
17.01.20
11:33
(2) Помогло.
7 Chesnok
 
17.01.20
11:34
(5) Код более сложный. Из двух текстовых файлов делается третий.
8 MWWRuza
 
гуру
17.01.20
11:43
(6)Помогло.
Ну, тут СокрЛП похоже отсекает непечатные символы перевода каретки, поэтому и помогло.
9 Kigo_Kigo
 
17.01.20
11:43
(7) Да я не прото, то что 8 бит испотльзует дос, вместо стандартной копии, а так да всегда когда получаю откуда либо строку делаю ее СокрЛП, а то такие чудеса иногда бывают :)
10 ДенисЧ
 
17.01.20
11:45
(9) "8 бит испотльзует дос, вместо стандартной копии"

Ты что-то непонятное говоришь....
11 Chesnok
 
17.01.20
11:47
(8) добавляется не просто пустая строка, а в ней два пробела. А еще при добавлении следующей строки, последний символ предыдущей удалялся и добавлялся к следующей. В общем непонятно. Кодировка текста  Windows (команда КодоваяСтраница(0) была).
12 Kigo_Kigo
 
17.01.20
11:51
(10) КомандаСистемы - это по сути DOS команда, с мелькание черного окна, это не понятно?
13 ДенисЧ
 
17.01.20
11:52
(12) а 8бит тут причём?
14 Chesnok
 
17.01.20
11:57
(13) "8 бит" это автор (4)
15 Злопчинский
 
17.01.20
19:47
(8) "тут СокрЛП похоже отсекает непечатные символы перевода каретки,"
не похоже, а именно так.
СокрЛП "убивает" концевые РазделительСтрок (как и по отдельности и 10 и 13)
.
СтрДлина(разделительСтрок) = 2
СтрДлина(СокрЛП(разделительСтрок)) = 0

СтрДлина(Симв(10)) = 1
СтрДлина(СокрЛП(Симв(10))) = 0

СтрДлина(Симв(13)) = 1
СтрДлина(СокрЛП(Симв(13))) = 0

СтрДлина(Симв(160)) = 1
СтрДлина(СокрЛП(Симв(160))) = 1

Что дает возможность просто без гемора "конкатенировать" подстроки во всяких заголовках, разделенные зпт, типа
.
//мой гений дарит вам
СтрРезультат="";

Если Чтото1 Тогда СтрРезультат=СтрРезультат+РазделительСтрок+Чтото1Подстрока;
Если Чтото2 Тогда СтрРезультат=СтрРезультат+РазделительСтрок+Чтото2Подстрока;
Если Чтото3 Тогда СтрРезультат=СтрРезультат+РазделительСтрок+Чтото3Подстрока;

СтрРезультат = СокрЛП(СтрРезультат); СтрРезультат = Стрзаменить(СтрРезультат,РазделительСтрок,", ");
//мой гений дарит вам

в цикле - аналогично
16 Злопчинский
 
17.01.20
19:48
"тут СокрЛП похоже отсекает..." читать как "СокрЛП похоже отсекает..."
17 Duke1C
 
18.01.20
14:47
(16) А в чём разница?))