Вопрос по конкатенации строк с целым числом в Паскале

Задача №5 из главы 8

Получите от пользователя три произвольных строки, одним выражением выполните конкатенацию следующим образом:
""первая строка + произвольный литерал + вторая строка + третья строка""
Результат конкатенации выведите на экран.

Вопрос: Почему нельзя произвести конкатенацию целочисленного литерала со строкой? Почему он выдает ошибку?
Ссылка на изображение https://ibb.co/izXWKo

var a, b, c: string; // секция объявления переменных
begin  // начало тела программы
    writeln('vvedite pervuy stroku: ');
    readln(a);
    writeln('vvedite vtoruy stroku: ');
    readln(b);
    writeln('vvedite tretiu stroku: ');
    readln(c);
    writeln('Skladyvaem vse stroki i literal: ');
    writeln(a + 100 + b + c);
    readln(); // удерживаем консоль
end. // конец тела программы  
vedro-compota's picture

Скопируйте сюда код и текст ошибки, который вы получаете.

_____________
матфак вгу и остальная классика =)

gani84's picture

Компиляция проекта, цель: Project1.exe: Код завершения 1, ошибок: 1
Project1.lpr(21,15) Error: Operator is not overloaded: "AnsiString" + "ShortInt"

vedro-compota's picture

вас понял, отвечу по основному вопросу отдельным комментарием.

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

в заголовке кратко отражайте суть проблемы. У вас же не конкатенация строк.

обновлено: извиняюсь, у вас действительно конкатенация.

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

Вопрос: Почему нельзя произвести конкатенацию целочисленного литерала со строкой? Почему он выдает ошибку?

Дело в том, что Паскаль (как и ряд других языков) обладает сильной типизацией (см. подробнее), это значит что нельзя внутри одного выражения использовать данные разного типа

Поэтому, вам надо:
или использовать сразу строковый литерал (что логичнее)
или явно приводить тип, например с помощью вызова: https://www.freepascal.org/docs-html/rtl... но явном приведении типа мы будет говорить в этом курсе позже. Лучше используйте строковый литерал.

_____________
матфак вгу и остальная классика =)

gani84's picture

var a, b, c: string; // секция объявления переменных
begin  // начало тела программы
    writeln('vvedite pervuy stroku: ');
    readln(a);
    writeln('vvedite vtoruy stroku: ');
    readln(b);
    writeln('vvedite tretiu stroku: ');
    readln(c);
    writeln('Skladyvaem vse stroki i literal: ');
    writeln(a + '100' + b + c);
    readln(); // удерживаем консоль
end. // конец тела программы 
vedro-compota's picture

решение засчитано.

_____________
матфак вгу и остальная классика =)