проблема с отладкой

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

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

проблема с отладкой

Сообщение Flader » 01.08.2011 19:14:38

Здравствуйте. Я новичок, изучаю паскаль по книге "Песни о Паскале", где для решения задач рекомендуется компилятор Free Pascal, который я и использую. Столкнулся с проблемой во время отладки проекта.
Когда я ввожу значение переменной, вместо возвращения к коду компилятор просто перемещает курсор в начало строки и как бы требует ввести значение еще раз. Потом я понял, что то второе значение используется после, когда программе нужно будет ввести значение уже другой переменной. Наверное, я объясняю ужасно, поэтому покажу на примере.
Код: Выделить всё
Write('Введите строку: '); Readln(S);

на экране:
Введите строку: (тут стоит курсор)
Ввожу строку, например AAAA. На экране:
Введите строку: AAAA
После нажатия enter курсор перемещается в начало строки (т.е. на букву В) и требует ввести значение снова. При отладке видно, как самое первое значение вводится в переменную, независимо от того, что было введено во второй раз. Строка обрабатывается в программе, но печатается в начало первой строки. Т.е. если результат будет BBBB, то 1 строка будет выглядеть так:
BBBBите строку: AAAA
При повторном вводе (программа повторяется 3 раза с помощью цикла) значение требуется ввести только один раз, но независимо от того, что было введено, переменная S использует то значение, что было введено в первый раз, когда курсор внезапно скаканул в начало строки. А то значение, что было введено при втором запуске (т.е. уже в третий раз, первые два раза были при первом запуске) переносится на третий запуск и т.д.
При этом такая проблема существует только в режиме отладки, в обычным запуске все нормально.
Чтобы было понятнее, привожу код и результаты вывода.
Код (программа просто заменяет символы A в введенной строке на B:
Код: Выделить всё
var S: string; k: integer;

procedure Scan(var arg : string);
var k: integer;
begin
     for k:=1 to Length(arg) do
         if arg[k]='A' then arg[k]:='B';
end;

begin
  for k:=1 to 3 do begin
    Write('Введите строку: '); Readln(S);
    Scan(S);
    Writeln(S);
  end;
end.

То, что получается при обычном запуске:
Введите строку: ABBA
BBBB
Введите строку: BBFA
BBFB
Введите строку: AACA
BBCB
И что получается при отладке:
BBBBите строку: ABBA
Введите строку: BBFA
BBFBите строку: AACA
ОС: Windows 7, версия комплитора 2.4.4
Flader
незнакомец
 
Сообщения: 2
Зарегистрирован: 01.08.2011 18:48:39

Re: проблема с отладкой

Сообщение Maxizar » 01.08.2011 20:04:52

Ну я чисто скопипастил ваш код и изменил только одно, это вот это:
Код: Выделить всё
Write('Введите строку: '); Readln(S);


Заменил на это:

Код: Выделить всё
Write('Введите строку: ');
Readln(S);


И у меня все ништяк... Именно как с так и без отладки все гуд...
возьму на себя смелость сказать (типа дать совет): писать так никогда нестоит, ни для себя ни для других.
так очень плохо:
Код: Выделить всё
Write('Введите строку: '); Readln(S);

Лучше так:
Код: Выделить всё
Write('Введите строку: ');
Readln(S);


Это что:?
Код: Выделить всё
if arg[k]='A' then arg[k]:='B';

Лучше так:
Код: Выделить всё
if arg[k]='A' then
   arg[k]:='B';


А так молодцы, отступы по два пробела и все такое :)... про цикл фор, а именно про перенос бегина, промолчу, тут уж как привыкли, лично я переношу в 90%.

Второе типа совета, если пишите на чистом фрипаскале и используете его ИДЕ, то поставьте Лазарус, и в нем пишите теже самые консольные приложения, но получите хороший редактор кода + плюшки и всякие радости :).
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: проблема с отладкой

Сообщение Flader » 01.08.2011 20:15:05

Maxizar, к сожалению, не помогло. Все точно так же. За советы спасибо. Попробую лазарус, возможно, там ошибка исчезнет.
Flader
незнакомец
 
Сообщения: 2
Зарегистрирован: 01.08.2011 18:48:39

Re: проблема с отладкой

Сообщение Oleg_D » 01.08.2011 22:33:38

Да, в режиме отладки FreePascal не вполне гладко работает :(
Попробуйте что-то еще: Лазарус или даже Borland Pascal - он надежней.
Вашей вины тут нет.
Oleg_D
постоялец
 
Сообщения: 390
Зарегистрирован: 09.05.2011 11:28:36

Re: проблема с отладкой

Сообщение Brainenjii » 02.08.2011 06:31:50

Да, в режиме отладки FreePascal не вполне гладко работает
Попробуйте что-то еще: Лазарус...

0.о
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: проблема с отладкой

Сообщение SWEET » 09.11.2018 22:44:30

Добрый день. Возникла абсолютно та же проблема, что описана в корневом сообщении. Может быть кто-то смог решить эту проблему применительно к Free Pascal, чтобы не нужно было переходить на Lazarus и т.д.? Очень надеюсь на положительный ответ. Спасибо!
SWEET
незнакомец
 
Сообщения: 2
Зарегистрирован: 09.11.2018 22:36:42

Re: проблема с отладкой

Сообщение Дож » 10.11.2018 19:39:53

SWEET, какая операционная система и используемый терминал для запуска программы?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: проблема с отладкой

Сообщение Vadim » 11.11.2018 06:33:56

SWEET
Заодно и версию FreePascal напишите. У меня 3.0.4 и код работает как нужно.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: проблема с отладкой

Сообщение SWEET » 11.11.2018 14:57:37

Windows 10. Версия Free Pascal 3.0.4. Используемый терминал для запуска программы - не совсем понимаю, что это...
На другом компе та же версия Free Pascal работала абсолютно нормально на Windows 7. А вот на новом ноутбуке с Windows 10 начались описанные выше проблемы.. : /
SWEET
незнакомец
 
Сообщения: 2
Зарегистрирован: 09.11.2018 22:36:42

Re: проблема с отладкой

Сообщение Дож » 11.11.2018 15:08:57

SWEET, если запускать программу не из FP IDE, а из cmd.exe, то ошибочное поведение остаётся?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: проблема с отладкой

Сообщение Лекс Айрин » 11.11.2018 15:11:48

SWEET, попробуйте запустить компилятор/отлаживаемую прогу в режиме совместимости, перейти на транковую версию fpc.
Глюки при смене платформы периодически бывают и иногда с этим приходится мириться.

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

Re: проблема с отладкой

Сообщение Alex2013 » 12.11.2018 01:55:57

Мой совет: не мучить "классические консольные программы" (все равно даже реальные консольные утилиты сейчас пишутся совсем иначе ) А сразу разбираться с GUI программированием, как не покажется странным сейчас начинающему значительно проще начать именно с них .
Для ускоренного проникновения в мир "оконного программирования " можно использовать например среду ХайАсм
( hiasm.com ) Кстати один из используемых компиляторов там как раз FPC...
Главное не забудьте вовремя вернутся к более консервативным средам разработки вроде Лазаруса .
(Дело в том, что реально серьезное программирование в ХайАсм тоже возможно, но требует гораздо больших знаний чем может дать сама среда ХайАсм. ) Но для начинающего это почти рай ! :idea:
Alex2013
долгожитель
 
Сообщения: 2923
Зарегистрирован: 03.04.2013 11:59:44

Re: проблема с отладкой

Сообщение Лекс Айрин » 12.11.2018 06:56:09

Alex2013, я бы не был так категоричен. Иногда и в чистой консоли надо поработать. Бывает, что и вообще только в режиме командной строки.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: проблема с отладкой

Сообщение Снег Север » 12.11.2018 09:29:51

Alex2013 писал(а):Мой совет: не мучить "классические консольные программы" (все равно даже реальные консольные утилиты сейчас пишутся совсем иначе ) А сразу разбираться с GUI программированием, как не покажется странным сейчас начинающему значительно проще начать именно с них .
+100500

Добавлено спустя 1 минуту 5 секунд:
Лекс Айрин писал(а):Иногда и в чистой консоли надо поработать.

Это точно НЕ для начинающих и, при нужде, осваивается на раз потом.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: проблема с отладкой

Сообщение Лекс Айрин » 12.11.2018 10:36:21

Снег Север писал(а):Это точно НЕ для начинающих и, при нужде, осваивается на раз потом.


Проблема в том, что иногда просто не нужны гуевые среды от слова вообще. И даже вредны. Например, при разработке для систем без GUI.
И, кстати, не факт, что я сейчас смогу собрать чисто консольную программу сложнее hello World.

Alex2013 писал(а):Для ускоренного проникновения в мир "оконного программирования " можно использовать например среду ХайАсм


С учетом древней версии встроенного в нее FPC (и обрезанного по самое не могу) совет странноват. Лучше использовать поставляемые с паскалем примеры.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

След.

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

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

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

Рейтинг@Mail.ru