Странное поведение writeln

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Странное поведение writeln

Сообщение mirk » 19.05.2016 00:04:55

Сделал простенький тест:
Код: Выделить всё
for i:=0 to 10000 do writeln('+'+inttostr(i)+'-');

и запускаю программу с перенаправлением вывода в файл (> test.log).
Первые 25 строк идут нормально, а потом каждая строка разбивается идет через 1 пустую строку.
При запуска без перенаправления выводится без пустых строк.
Открыл в HEX редакторе - пустая строка представлена x0D.
Почему начинает подмешиваться виндовый перевод строки в юникс программу?

Добавлено спустя 5 минут 16 секунд:
Сделал write (т.е. без перевода строки).
Начинает подмешиваться x0A на 81 позиции - это я так понимаю что то связано с терминалом? Но как он влияет?
И так же начинает подмешиваться x0D после 25 строки :(
Вот же беда :(
mirk
постоялец
 
Сообщения: 317
Зарегистрирован: 24.09.2007 10:03:39

Re: Странное поведение writeln

Сообщение zub » 19.05.2016 00:37:18

Видимо терминал экран так скролирует и строчки сам переносит. для эксперимента запустите в терминале побольше\поменьше
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Странное поведение writeln

Сообщение mirk » 19.05.2016 00:49:23

Так если я перенаправляю вывод в файл, то влияния терминала быть не должно по идее.
Сколько программ использовал - нет такой проблемы ни с дополнительными переносами, ни с длинными строками.
mirk
постоялец
 
Сообщения: 317
Зарегистрирован: 24.09.2007 10:03:39

Re: Странное поведение writeln

Сообщение zub » 19.05.2016 00:53:40

хз. в винде такой проблемы не встречал.
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Странное поведение writeln

Сообщение SSerge » 19.05.2016 05:33:10

mirk писал(а): то влияния терминала быть не должно по идее


В моём представлении - поведение сильно зависит от того, что за терминал используется.
В стандартной консоли - влияния быть не должно. Однако, остается зависимость от шелла - некоторые могут и перехватывают потоки.
А вот если это какое-нибудь г-но типа xterm или что похуже...
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Странное поведение writeln

Сообщение Дож » 19.05.2016 12:59:06

Начинает подмешиваться x0A на 81 позиции - это я так понимаю что то связано с терминалом? Но как он влияет?

Какой шелл используется? У меня в винде с cmd такое не воспроизводится.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Странное поведение writeln

Сообщение Vadim » 20.05.2016 04:04:39

Пытался воспроизвести проблему (Rosa Linux) таким кодом:
Код: Выделить всё
Uses SysUtils;
Var
  i: integer;

Begin

for i:=0 to 10000 do
  writeln('+'+inttostr(i)+'-');
 
End. 

Никаких артефактов в файле test.log не обнаружил.
Использую FPC 3.0.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Странное поведение writeln

Сообщение mirk » 23.05.2016 12:35:31

Дож писал(а):Какой шелл используется?

mate-terminal

Добавлено спустя 32 минуты 37 секунд:
xfce4-terminal аналогично
mirk
постоялец
 
Сообщения: 317
Зарегистрирован: 24.09.2007 10:03:39

Re: Странное поведение writeln

Сообщение Дож » 25.05.2016 02:54:51

mirk, я про шелл, а не терминал, — что в конечно итоге «>» парсит и программы запускает? sh, bash, zsh, что-то другое?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Странное поведение writeln

Сообщение zub » 25.05.2016 03:06:01

глянул в kubunte - подмеса нет
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Странное поведение writeln

Сообщение mirk » 27.05.2016 19:16:01

Пробовал tch и bash - поведение одинаковое.
mirk
постоялец
 
Сообщения: 317
Зарегистрирован: 24.09.2007 10:03:39


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

Рейтинг@Mail.ru