Как выйти по Esc

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

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

Re: Как выйти по Esc

Сообщение Deimos » 26.03.2017 20:59:50

Леонид писал(а):Те, кому 40+

Мне еще не за 40, но я писал для Электроника 61...

Согласен с Снегом-Севером - проще сделать эмуляцию консоли визуальными компонентами, для Вашей задачи... На вскидку - tMemo, tEdit + пара tButton (можно и без них обойтись). Так Вы реализуете свой проект быстрее и проще...

Мем используйте, как консоль, а в эдите отловить нажатия клавиш по коду проще-простого... (onKeyDown или UP)

визуально - выравнивание компонент + уберите фокус у мема (tabstop= false). Будет похоже на консоль... И писать будет проще... (сугубо ИМХО)
Deimos
постоялец
 
Сообщения: 132
Зарегистрирован: 17.01.2010 00:31:30

Re: Как выйти по Esc

Сообщение Снег Север » 27.03.2017 05:32:03

Код: Выделить всё
program project1;
uses Crt;
var
   ch :char;
   str :string;
   n, Code  :integer;
   a :real;
function input :string;
begin
  result := '';
  repeat
    ch := readkey;
    if (ch<>#13) and (ch<>#27) then
    begin
       result := result + ch;
       write(ch);
    end
    else
    if (ch=#27) then
       result := ch;
  until (ch=#13) or (ch=#27);
end;
begin
  repeat
     writeln('press Esc or Enter to end.');
     writeln('Input integer :');
     str := input;
     if (str='') or (str[1]=#27) then
        continue;
     val(str, n, code);
     if code<>0 then
        writeln('Error at position ',code)
     else
        writeln('Your input is ',n);


     writeln('Input real:');
     str := input;
     if (str='') or (str[1]=#27) then
        continue;
     val(str, a, code);
     if code<>0 then
        writeln('Error at position ',code)
     else
        writeln('Your input is ',a);

{...}
  until (str='') or (str[1]=#27);
end.


Но я, разумеется, писал бы подобное в нормальном графическом интерфейсе...
Аватара пользователя
Снег Север
энтузиаст
 
Сообщения: 940
Зарегистрирован: 27.11.2007 16:14:47

Re: Как выйти по Esc

Сообщение Леонид » 27.03.2017 11:36:19

Попытался попробовать Ваш пример, но получил: Error: Identifier not found "result"
Если в функции ее объявляю (как советуют в некоторых местах):
Код: Выделить всё
var result:string;
,
то из программы выходит в любом случае, не зависимо от ввода числа или простого нажатия Enter.
В логе: Warning: Function result does not seem to be set

PS. Пользую FreePascal. Ваяю в Geany.
Леонид
новенький
 
Сообщения: 16
Зарегистрирован: 23.03.2017 13:19:20

Re: Как выйти по Esc

Сообщение tema » 27.03.2017 14:05:55

Леонид писал(а):Попытался попробовать Ваш пример, но получил: Error: Identifier not found "result"
Если в функции ее объявляю (как советуют в некоторых местах):
Код: Выделить всё
var result:string;
,
то из программы выходит в любом случае, не зависимо от ввода числа или простого нажатия Enter.
В логе: Warning: Function result does not seem to be set

PS. Пользую FreePascal. Ваяю в Geany.

Объявлять не надо.
Замените result на input и не объявляйте. Она уже объявлена как имя функции
tema
постоялец
 
Сообщения: 318
Зарегистрирован: 24.03.2011 20:19:27

Re: Как выйти по Esc

Сообщение Леонид » 27.03.2017 15:38:14

tema, спасибо огромное. Заработало.

По поводу result, пишут, что в TP ее нет. Как в FP - я не в курсе. Но она не работает. Ругается, что Error: Identifier not found "result"

А с заменой на input все нормально. Буду приспосабливать к своему творению.

PS. Не нашел где тут благодарности по расставлять. Но большое спасибо всем откликнувшимся.
Леонид
новенький
 
Сообщения: 16
Зарегистрирован: 23.03.2017 13:19:20

Re: Как выйти по Esc

Сообщение Лекс Айрин » 27.03.2017 16:24:19

Леонид писал(а):По поводу result, пишут, что в TP ее нет.


странно... в учебнике по 7 версии (или 6 не помню уже) result была.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3929
Зарегистрирован: 19.02.2013 16:54:51

Re: Как выйти по Esc

Сообщение Снег Север » 27.03.2017 16:31:19

Леонид, я писал и запускал в лазарус 1.6.4, писать программы не в нормальной среде программирования - это извращение. Крайне рекомендую выкинуть и напрочь забыть про всё это окаменевшее дерьмо мамонта. Вы же в 21-м веке живете, как-никак.
Даже если вы делаете консольное приложение, хорошее IDE существенно облегчает работу.
Аватара пользователя
Снег Север
энтузиаст
 
Сообщения: 940
Зарегистрирован: 27.11.2007 16:14:47

Re: Как выйти по Esc

Сообщение Леонид » 27.03.2017 16:47:22

А чем Geany плох?
Да и в Lazarus'е консольное приложение делать разве проще? Он же как и дельфи для кнопочно-окошечных программ. Или я сильно ошибаюсь?
В учебниках по Lazarus'у про консольные только слегка упоминается.
И см я чуток пробовал - разницы, практически, нет никакой - то же самое редактирование текста.
Или, просто, мне хороших книг об этом не попадалось. Что не удивительно. О паскале вообще хорошей литературы почти нет. Все только друг у друга переписывают. Даже опечатки одинаковые попадаются.
Леонид
новенький
 
Сообщения: 16
Зарегистрирован: 23.03.2017 13:19:20

Re: Как выйти по Esc

Сообщение Лекс Айрин » 27.03.2017 16:50:55

Снег Север писал(а):Даже если вы делаете консольное приложение, хорошее IDE существенно облегчает работу.


это дело привычки. Консольщики, допустим, зачастую считают, что IDE вредит, так как расслабляет программиста. Особым шиком раньше считалось писать программы не пользуясь компьютерами вообще (кроме набора программы перед отладкой и компиляцией). К тому же, у некоторых может тупо не быть оконного менеджера и они работают чисто в консоли. А псевдографическое IDE под, допустим, линуксом, может не заработать (да и, по сути, то самое дерьмо мамонта и есть).

Добавлено спустя 5 минут 25 секунд:
Леонид писал(а):Да и в Lazarus'е консольное приложение делать разве проще? Он же как и дельфи для кнопочно-окошечных программ. Или я сильно ошибаюсь?


Есть один нюанс с кодировкой текста, о котором стоит помнить -- Лазарус, даже консольные проги пишет по умолчанию в UTF8, соответственно, надо будет перед компиляцией конвертировать файлы.
А вообще, IDE хорошо тем, что оно позволяет превратить текст проги в гипертекст и более-менее легко по нему ориентироваться.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3929
Зарегистрирован: 19.02.2013 16:54:51

Re: Как выйти по Esc

Сообщение Леонид » 27.03.2017 17:35:31

Лекс Айрин писал(а):Есть один нюанс с кодировкой текста, о котором стоит помнить -- Лазарус, даже консольные проги пишет по умолчанию в UTF8, соответственно, надо будет перед компиляцией конвертировать файлы.

А зачем мне его конвертировать? В Linux по умолчанию UTF8 используется.
Леонид
новенький
 
Сообщения: 16
Зарегистрирован: 23.03.2017 13:19:20

Re: Как выйти по Esc

Сообщение Снег Север » 27.03.2017 18:11:40

Леонид писал(а):А чем Geany плох?
Да и в Lazarus'е консольное приложение делать разве проще? Он же как и дельфи для кнопочно-окошечных программ. Или я сильно ошибаюсь?
Понятия не имею про Geany, может, если вы принципиально намерены ограничиться консольными программами, то Lazarus особых преимуществ не имеет. Хотя я плохо представляю, как вы будете в Geany делать точки останова и пошаговое выполнение...
Lazarus позволят писать любые типы программ. И время консольных программ ушло - даже в линуксе большинство из них давно имеют обертки с нормальным человеческим графическим интерфейсом (как в винде :D ). Сейчас даже ретро-игры, имитирующие алфавитно-цифровые "картинки" а-ля 80-е годы, пишут на графической канве...
Аватара пользователя
Снег Север
энтузиаст
 
Сообщения: 940
Зарегистрирован: 27.11.2007 16:14:47

Re: Как выйти по Esc

Сообщение Лекс Айрин » 27.03.2017 21:30:16

Снег Север писал(а):Понятия не имею про Geany,


программа типа notepad++

Снег Север писал(а): И время консольных программ ушло - даже в линуксе большинство из них давно имеют обертки с нормальным человеческим графическим интерфейсом

Странно, почему же попробовав вкус графических оболочек руки так тянутся к текстовой консоли? Даже несмотря на то, что MS всячески выпиливало DOS его реинкарнациями (CMD, FreeDOS) пользуются до сих пор. При том, что людей делающих это из ностальгии достаточно мало.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 3929
Зарегистрирован: 19.02.2013 16:54:51

Re: Как выйти по Esc

Сообщение tema » 27.03.2017 22:59:35

Раз решили воспользоваться этимо кодом, то можно из него удалить лишнее:
Код: Выделить всё
program project1;
uses Crt;
var
   ch :char;
   str :string;
   n, Code  :integer;
   a :real;
function input :string;
begin
  result := '';
  repeat
    ch := readkey;
    if (ch<>#13) and (ch<>#27) then
    begin
       result := result + ch;
       write(ch);
    end;
  until (ch=#13) or (ch=#27);
end;
begin
  repeat
     writeln('press Esc or Enter to end.');
     writeln('Input integer :');
     str := input;
     if (str='') or (ch=#27) then
        continue;
     val(str, n, code);
     if code<>0 then
        writeln('Error at position ',code)
     else
        writeln('Your input is ',n);


     writeln('Input real:');
     str := input;
     if (str='') or (ch=#27) then
        continue;
     val(str, a, code);
     if code<>0 then
        writeln('Error at position ',code)
     else
        writeln('Your input is ',a);

{...}
  until (str='') or (ch=#27);
end.
tema
постоялец
 
Сообщения: 318
Зарегистрирован: 24.03.2011 20:19:27

Re: Как выйти по Esc

Сообщение Леонид » 28.03.2017 01:41:14

Снег Север писал(а):И время консольных программ ушло - даже в линуксе большинство из них давно имеют обертки с нормальным человеческим графическим интерфейсом (как в винде :D ). Сейчас даже ретро-игры, имитирующие алфавитно-цифровые "картинки" а-ля 80-е годы, пишут на графической канве...


Вот тут я категорически не согласен. Многое в консоли делается быстрей, чем в "гуях". И, хотя, я не люблю консоль, но часто ей пользуюсь. Это, во-первых, файловые менеджеры: mc и ranger. Проигрыватели разных аудио, тот же moc. Открыть папку с музыкой быстро, как и в mc (тем более они как 2-е капли воды), нажать A (Shift+a) и все содержимое уже в плейлисте. Нажал ENTER и запустил шарманку. И прочая и прочая.

Лирическое отступление закончено. Теперь в делу.
Geany это совсем не
программа типа notepad++
. Даже очень нет. И таки да. Я в ближайшем столетии хочу ограничиться консольными программульками.
Это как хобби на пенсии. Делать все равно будет нечего. А за те несколько лет, что осталось до нее, как раз кой чего освою. Вот и буду ваять в стол. Ностальгировать.
Леонид
новенький
 
Сообщения: 16
Зарегистрирован: 23.03.2017 13:19:20

Re: Как выйти по Esc

Сообщение Снег Север » 28.03.2017 06:38:31

Лекс Айрин писал(а):Странно, почему же попробовав вкус графических оболочек руки так тянутся к текстовой консоли?
Не встречал таких, у кого тянутся. Т.е. подозреваю конечно, что "красноглазики" не переводятся, но с ними редко пересекаюсь. Консольные команды изредка использовать приходится, но каждый раз с матом сквозь зубы...

Добавлено спустя 7 минут 34 секунды:
Леонид писал(а):Многое в консоли делается быстрей, чем в "гуях".
Я с линуксами практически не имею дела - на работе крутятся на виртуалках пара специализированных комплексов, оба с нормальным веб-интерфейсом, есть для тестовых целей минт, единственный который не вызывает у меня тошноты с первого взгляда...
А в винде просто не бывает необходимости "делать быстрее". И, право, у меня всегда есть чем занять голову вместо запоминания десятков дебильных ключей у программ, которые я использую раз в несколько месяцев. Мне быстрее кликнуть в меню, чем вызывать списки ключей по хелпу и вбивать их в строку...
Аватара пользователя
Снег Север
энтузиаст
 
Сообщения: 940
Зарегистрирован: 27.11.2007 16:14:47

Пред.След.

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

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

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

Рейтинг@Mail.ru