|
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) А в чём разница?))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |