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

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

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

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

Сообщение Астемир » 01.06.2017 15:50:47

Здравствуйте. Я просто хочу прикрепить фотографии, где запечатлена проблема. Так будет легче.
В качестве примера, приведу простенькую программу (картинка рядом с картинкой с текстом программы-конечный результат).
Не понимаю, с чем это может быть связано
Вложения
Снимок2.PNG
Снимок2.PNG (1.21 КБ) Просмотров: 4376
Снимок1.PNG
Снимок1.PNG (1.19 КБ) Просмотров: 4376
Снимок.PNG
Снимок.PNG (8.87 КБ) Просмотров: 4376
Астемир
незнакомец
 
Сообщения: 3
Зарегистрирован: 01.06.2017 15:46:35

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

Сообщение Лекс Айрин » 01.06.2017 20:04:27

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

Добавлено спустя 16 минут 49 секунд:
PS:запиши результирующую строку как 'zdr...te,' + s +' ' + n + '!'
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4200
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение Cheb » 01.06.2017 20:56:48

Насколько я помню, она нужна для чтения из файлов имеющих физическое воплощение.
Чёзабред :shock:
Readln - перемещает на следующую строку, read - оставляет на текущей строке
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 631
Зарегистрирован: 06.06.2005 15:54:34

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

Сообщение vitaly_l » 01.06.2017 21:06:02

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

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

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

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение Дож » 01.06.2017 21:11:50

Астемир, выглядит так, будто произошёл «возврат каретки» (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, а напрямую сам исполняемый файл, проблема с затиранием остаётся?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 696
Зарегистрирован: 12.10.2008 16:14:47

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

Сообщение Лекс Айрин » 01.06.2017 22:27:49

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


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


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

А у меня не воспроизвелась.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4200
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение Астемир » 01.06.2017 22:49:01

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

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

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

Добавлено спустя 4 минуты 28 секунд:
Дож я ужена трех версиях попробовал - та же проблема. попробовал в pabc - там все работает. а если запускать из exeшника, то тоже работает
Астемир
незнакомец
 
Сообщения: 3
Зарегистрирован: 01.06.2017 15:46:35

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

Сообщение vitaly_l » 01.06.2017 23:01:15

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

Дебагер попробуйте отключить.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение Дож » 01.06.2017 23:07:25

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

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

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

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

Сообщение Снег Север » 02.06.2017 07:00:20

Консолехрень. Давно пора за использование FP IDE бить чем-то тяжелым по голове.
Аватара пользователя
Снег Север
энтузиаст
 
Сообщения: 1021
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение Лекс Айрин » 02.06.2017 09:26:18

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

Снег Север, я иногда использую из ностальгии... все же первый мой более-менее нормальный компилятор это TP версии 3, если не ошибаюсь.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4200
Зарегистрирован: 19.02.2013 16:54:51

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

Сообщение Астемир » 03.06.2017 16:48:56

На другом форуме мне подсказали добавить uses crt. самое забавное, что помогло.
Астемир
незнакомец
 
Сообщения: 3
Зарегистрирован: 01.06.2017 15:46:35


Вернуться в Обучение Free Pascal

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

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

Рейтинг@Mail.ru