Пропадание строк при компиляции
Модератор: Модераторы
Пропадание строк при компиляции
Здравствуйте. Я просто хочу прикрепить фотографии, где запечатлена проблема. Так будет легче.
В качестве примера, приведу простенькую программу (картинка рядом с картинкой с текстом программы-конечный результат).
Не понимаю, с чем это может быть связано
В качестве примера, приведу простенькую программу (картинка рядом с картинкой с текстом программы-конечный результат).
Не понимаю, с чем это может быть связано
- Вложения
-
- Снимок2.PNG (1.21 КБ) 27262 просмотра
-
- Снимок1.PNG (1.19 КБ) 27262 просмотра
-
- Снимок.PNG (8.87 КБ) 27262 просмотра
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Астемир, а зачем readln? В этом есть какая-то особая необходимость? Насколько я помню, она нужна для чтения из файлов имеющих физическое воплощение.
Добавлено спустя 16 минут 49 секунд:
PS:запиши результирующую строку как 'zdr...te,' + s +' ' + n + '!'
Добавлено спустя 16 минут 49 секунд:
PS:запиши результирующую строку как 'zdr...te,' + s +' ' + n + '!'
ЧёзабредНасколько я помню, она нужна для чтения из файлов имеющих физическое воплощение.
Readln - перемещает на следующую строку, read - оставляет на текущей строке
Насколько я понял у него writeln затирает, то, что записано в Readln.
Я не знаю почему это происходит. Но могу предложить использовать, костыль:
добавив после readln(s); запись пустотой строки: writeln(''); она тогда перескочит - не затерев текст.
И тоже самое сделать для readln(n); writeln('');
Но это костыль, т.к. по моему она должна переходить на следующую строку сама.
.
Я не знаю почему это происходит. Но могу предложить использовать, костыль:
добавив после readln(s); запись пустотой строки: writeln(''); она тогда перескочит - не затерев текст.
И тоже самое сделать для readln(n); writeln('');
Но это костыль, т.к. по моему она должна переходить на следующую строку сама.
.
Астемир, выглядит так, будто произошёл «возврат каретки» (CR), но не произошло перехода на новую строку (LF). Попробуйте сделать это вручную, вбив соответствующие коды:
Для более детального анализа скриншотов недостаточно. Нужно знать 1) какой терминал используется и с какими настройками 2) что содержится в константе LineEnding 3) в какой кодировке файл, какая кодировка установлена в системе 4) ОС и версия fpc.
Садись, два.
Добавлено спустя 52 минуты 34 секунды:
Воспроизвёл проблему в винде, если запускать программу из FP IDE. Выглядит так, будто IDE'шный шелл как-то очень неправильно обрабатывает Enter.
Астемир, если запускать программу не из FP IDE, а напрямую сам исполняемый файл, проблема с затиранием остаётся?
Код: Выделить всё
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.
А у меня не воспроизвелась.
Дож писал(а):Астемир, если запускать программу не из FP IDE, а напрямую сам исполняемый файл, проблема с затиранием остаётся?
Дож
энтузиаст
Сообщения: 659
Зарегистрирован: 12.10.2008 15:14:47
проблемы нет тогда
Добавлено спустя 4 минуты 28 секунд:
Дож я ужена трех версиях попробовал - та же проблема. попробовал в pabc - там все работает. а если запускать из exeшника, то тоже работает
Астемир писал(а):а если запускать из exeшника, то тоже работает
Дебагер попробуйте отключить.
Я думаю, что это баг в FP IDE Shell с неправильной обработкой Enter'а, и без починки этого бага проблема едва ли решаема. Можно попытаться взять какой-нибудь древний fp.exe , может в нём не поломано.
У меня воспроизводится в Windows 10, FP IDE 1.0.12.
(FP IDE официально не поддерживается разработчиками, лучше не использовать его вообще, и для запуска программ в частности.)
У меня воспроизводится в 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, если не ошибаюсь.
Снег Север, я иногда использую из ностальгии... все же первый мой более-менее нормальный компилятор это TP версии 3, если не ошибаюсь.
На другом форуме мне подсказали добавить uses crt. самое забавное, что помогло.
