Пропадание строк при компиляции

Форум для изучающих FPC и их учителей.

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

Ответить
Астемир
незнакомец
Сообщения: 3
Зарегистрирован: 01.06.2017 14:46:35

Пропадание строк при компиляции

Сообщение Астемир »

Здравствуйте. Я просто хочу прикрепить фотографии, где запечатлена проблема. Так будет легче.
В качестве примера, приведу простенькую программу (картинка рядом с картинкой с текстом программы-конечный результат).
Не понимаю, с чем это может быть связано
Вложения
Снимок2.PNG
Снимок2.PNG (1.21 КБ) 27261 просмотр
Снимок1.PNG
Снимок1.PNG (1.19 КБ) 27261 просмотр
Снимок.PNG
Снимок.PNG (8.87 КБ) 27261 просмотр
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Астемир, а зачем readln? В этом есть какая-то особая необходимость? Насколько я помню, она нужна для чтения из файлов имеющих физическое воплощение.

Добавлено спустя 16 минут 49 секунд:
PS:запиши результирующую строку как 'zdr...te,' + s +' ' + n + '!'
Аватара пользователя
Cheb
энтузиаст
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34
Контактная информация:

Сообщение Cheb »

Насколько я помню, она нужна для чтения из файлов имеющих физическое воплощение.
Чёзабред :shock:
Readln - перемещает на следующую строку, read - оставляет на текущей строке
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

Насколько я понял у него writeln затирает, то, что записано в Readln.

Я не знаю почему это происходит. Но могу предложить использовать, костыль:
добавив после readln(s); запись пустотой строки: writeln(''); она тогда перескочит - не затерев текст.
И тоже самое сделать для readln(n); writeln('');

Но это костыль, т.к. по моему она должна переходить на следующую строку сама.

.
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Астемир, выглядит так, будто произошёл «возврат каретки» (CR), но не произошло перехода на новую строку (LF). Попробуйте сделать это вручную, вбив соответствующие коды:

Код: Выделить всё

write('familya?', #13#10);
...
write('imya?', #13#10);


Для более детального анализа скриншотов недостаточно. Нужно знать 1) какой терминал используется и с какими настройками 2) что содержится в константе LineEnding 3) в какой кодировке файл, какая кодировка установлена в системе 4) ОС и версия fpc.

Лекс Айрин писал(а):Астемир, а зачем readln? В этом есть какая-то особая необходимость? Насколько я помню, она нужна для чтения из файлов имеющих физическое воплощение.

Садись, два.

Добавлено спустя 52 минуты 34 секунды:
Воспроизвёл проблему в винде, если запускать программу из FP IDE. Выглядит так, будто IDE'шный шелл как-то очень неправильно обрабатывает Enter.

Астемир, если запускать программу не из FP IDE, а напрямую сам исполняемый файл, проблема с затиранием остаётся?
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Дож писал(а):Садись, два.


Cheb писал(а):Readln - перемещает на следующую строку, read - оставляет на текущей строке


Он, вообще-то уже перешел по writeln на новую строку... И вообще-то я просто решил уточнить это реально нужно или нет. Проверил. Нужна. Хотя раньше в TP не была так необходима((
Дож писал(а):Воспроизвёл проблему в винде, если запускать программу из FP IDE.

А у меня не воспроизвелась.
Астемир
незнакомец
Сообщения: 3
Зарегистрирован: 01.06.2017 14:46:35

Сообщение Астемир »

Дож писал(а):Астемир, если запускать программу не из FP IDE, а напрямую сам исполняемый файл, проблема с затиранием остаётся?

Дож
энтузиаст
 
Сообщения: 659
Зарегистрирован: 12.10.2008 15:14:47

проблемы нет тогда

Добавлено спустя 4 минуты 28 секунд:
Дож я ужена трех версиях попробовал - та же проблема. попробовал в pabc - там все работает. а если запускать из exeшника, то тоже работает
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

Астемир писал(а):а если запускать из exeшника, то тоже работает

Дебагер попробуйте отключить.
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Я думаю, что это баг в FP IDE Shell с неправильной обработкой Enter'а, и без починки этого бага проблема едва ли решаема. Можно попытаться взять какой-нибудь древний fp.exe , может в нём не поломано.

У меня воспроизводится в Windows 10, FP IDE 1.0.12.

(FP IDE официально не поддерживается разработчиками, лучше не использовать его вообще, и для запуска программ в частности.)
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3069
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Консолехрень. Давно пора за использование FP IDE бить чем-то тяжелым по голове.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Дож, у меня вин 7максимальная с fp IDE 1.0.12... все работает четко. Так что дело явно не в ней.

Снег Север, я иногда использую из ностальгии... все же первый мой более-менее нормальный компилятор это TP версии 3, если не ошибаюсь.
Астемир
незнакомец
Сообщения: 3
Зарегистрирован: 01.06.2017 14:46:35

Сообщение Астемир »

На другом форуме мне подсказали добавить uses crt. самое забавное, что помогло.
Ответить