Страница 1 из 2

ошибка вывода writeln

СообщениеДобавлено: 16.02.2022 21:40:38
MusaevRamiz
Приветствую, Друзья! Подскажите, пожалуйста.
Код: Выделить всё
var    N, S, R : string;
begin
writeln('Surname'); readln(S);
writeln('Name'); readln(N);
R:='hello, ' + N +' '+ S + '!';
writeln(R);
readln
end.

Не могу понять, почему при запуске не выводится полное сообщение hello + значение переменных N + S!
А также интересует вопрос, после выполнения процедуры вывода фамилии, если напечатать имя, то оно поверх фамилии печатается, в той же строке. Слова как бы друг на друга накладываются. В итоге выводится только сообщение hello и значение переменной S. Результат на скрине.

Re: ошибка вывода writeln

СообщениеДобавлено: 16.02.2022 22:48:00
zub
fp ide на данный момент чуток устарела и глючит, незнаю, починят ли ее. запускай в отдельном терминале, все будет ок

Re: ошибка вывода writeln

СообщениеДобавлено: 16.02.2022 22:50:08
Seenkao
MusaevRamiz писал(а):Приветствую, Друзья! Подскажите, пожалуйста.
Код: Выделить всё
var    N, S, R : string;
begin
writeln('Surname'); readln(S);
writeln('Name'); readln(N);
R:='hello, ' + N +' '+ S + '!';
writeln(R);
readln
end.


попробуй так:
Код: Выделить всё
var    N, S, R : string;
begin
writeln('Surname'); readln(S);
writeln('Name'); readln(N);
writeln('hello, ', N, ' ', S, '!';
readln
end.

Re: ошибка вывода writeln

СообщениеДобавлено: 16.02.2022 23:47:16
zub
Seenkao
объясни мистическую разницу? или гадаем?

Re: ошибка вывода writeln

СообщениеДобавлено: 17.02.2022 00:06:34
Seenkao
Разницы принципиально нет, но возможно неправильно что-то происходит при "сложении", и это может выявиться при разном исполнении программы.

Вообще, зачем ты мне задаёшь подобные вопросы? Или хочешь сказать, что ты ни разу не сталкивался с ситуациями, когда в коде меняешь значения местами и код начинает по другому работать? Хотя не должен!!!

У меня работают оба варианта правильно.

Re: ошибка вывода writeln

СообщениеДобавлено: 17.02.2022 10:25:58
alexs
Подтверждаю - всё работает

Re: ошибка вывода writeln

СообщениеДобавлено: 17.02.2022 13:13:39
zub
при запуске приложения в консоли ос работает.
при запуске приложения в консоль fp ide (контрол+ф9) в винде глючит

Re: ошибка вывода writeln

СообщениеДобавлено: 17.02.2022 13:21:07
Снег Север
Когда уже люди усвоят. что fp ide - это окаменевшее гуано мамонта, которое ни в коем случае нельзя использовать? :roll:

Re: ошибка вывода writeln

СообщениеДобавлено: 17.02.2022 19:26:18
Sharfik
Я когда учился, на информатике были задачки с TurboPascal. Так вот, на моем ПК единственно его не было, и чтобы не заморачиваться все тоже самое в среде Delphi делал.
Ну не суть.. в общем две истины с тех пор в голове:
1. Писать всегда два раза readln в конце, а не один как тут.
2. Не использовать связку if then без begin end.
Ибо не работало как надо.

Re: ошибка вывода writeln

СообщениеДобавлено: 17.02.2022 19:45:17
zub
странные истины. никогда бы неподумал))

Re: ошибка вывода writeln

СообщениеДобавлено: 18.02.2022 14:28:52
Sharfik
zub писал(а):странные истины. никогда бы неподумал))

Ну, а что?) Иначе окно исполнения закрывалось и не показывало результат. А ход условий выполнения был абы какой.
Со временем еще одна добавилась - не пользоваться бесплатным средами разработки использующие внешние библиотеки типа .NetFramework. Это я про TurboDelphi.

Re: ошибка вывода writeln

СообщениеДобавлено: 19.02.2022 21:21:41
Снег Север
Sharfik писал(а):не пользоваться бесплатным средами разработки использующие внешние библиотеки типа .NetFramework. Это я про TurboDelphi

А у вас за NetFramework кто-то денег запросил?

Re: ошибка вывода writeln

СообщениеДобавлено: 20.02.2022 03:48:07
Sharfik
Снег Север писал(а):А у вас за NetFramework кто-то денег запросил?

Это редкосная подстава просто. Я где то на форуме писал, как я пришел к lazarus. В один прекрасный день пытаешься установить TurboDelphi, а оно тебе говорит дай NF 3.5, а на ОС стоит более новый, и более старый уже отказывается установится. Спасибо, больше не нужно. Все что для себя теперь пишу делаю чтобы работало без говно библиотек. Плагины, программы продаваемые для ПО Autodesk такую же мерзкую особенность имеют - работают только с конкретной версией.

Re: ошибка вывода writeln

СообщениеДобавлено: 20.02.2022 07:52:53
Снег Север
У меня не было случая, чтобы более старый NetFramework не устанавливался в дополнение к новому. У меня всегда стоят три-четыре версии NetFramework.

Re: ошибка вывода writeln

СообщениеДобавлено: 27.02.2022 01:28:09
Сквозняк
Снег Север писал(а):Когда уже люди усвоят. что fp ide - это окаменевшее гуано мамонта, которое ни в коем случае нельзя использовать? :roll:

Это винда - окаменелое говно мамонта, которая выносит мозг траблами с кодировками, а в линуксе патченная версия фп-иде работает нормально, а в лазарусе редактор глючит, хз как в последней версии - не пересобирал её. В третьей версии фпц изговняли кодировки специально чтобы они в винде меньше глючили.

Добавлено спустя 16 минут 1 секунду:
MusaevRamiz писал(а):Приветствую, Друзья! Подскажите, пожалуйста.

Код: Выделить всё
var N, S, R : string;
begin
writeln('Surname'); readln(S);
writeln('Name'); readln(N);
R:='hello, ' + N +' '+ S + '!';
writeln(R);
readln
end.


В винде плохо с кодировками - винда любит перекодировать что не надо, отчего портится вывод в консоль и системные команды. Вводишь команду прыгнуть в каталог, а винда эту команду без спроса перекодирует в мусор и прыжок промахивается мимо каталога. Буквально, считываешь из системы набор байтов, вводишь его же, и он не срабатывает, потому что винда успела его изговнять. Это какой-то маразм Гейтса и Баллмера. В фпц 3 версии с этим стало возможно бороться, и программы писать следует примерно как-то так:
Код: Выделить всё
{$CODEPAGE CP866}
uses
JwaWinCon, Windows, jwawinbase, jwawinnt;//точно не вспомню, что тут лишнее :)

var    N, S, R : rawbytestring; //а этот тип строк - чтобы компилятор не делал никаких лишних перекодирований
ZZ5: ANSISTRING;//РАВБИТЕСТРИНГ НЕ ПРИНИМАЕТ

begin
RUNCOMMAND('cmd.exe /c chcp 866',ZZ5); //контрольный "выстрел, чтобы накормить маздайку кодировкой"
setconsolecp(866);
//а теперь только можно общаться с маздайкой
//при подозрениях, процедуры - повторить
writeln('Surname'); readln(S);
writeln('Name'); readln(N);
R:='hello, ' + N +' '+ S + '!';
writeln(R);
readln;
end.

Долго запускать винду, потому код не протестировал, но он надёрган из рабочего и протестированного кода. Если из иде эта версия теста заработает нормально, то это значит, что в виндовой иде и твоей программе не хватает такого кода.