Консольное приложение read,write

Вопросы программирования и использования среды Lazarus.

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

Ответить
Ildus
новенький
Сообщения: 40
Зарегистрирован: 12.10.2018 18:35:38

Консольное приложение read,write

Сообщение Ildus »

Привет, софорумцам.
Проблема в том, что при создании консольного приложение или программы, вообщем консольной, такие команды как read(), write() не работают
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Ildus писал(а):консольного приложение или программы, вообщем консольной, такие команды как read(), write() не работают

А вот это неправда! Я, по большей части, пишу как раз консольные приложения. И Read() и Write() работают просто замечательно!
У Вас ведь на рисунках не консольное приложение... ;-)
Ildus
новенький
Сообщения: 40
Зарегистрирован: 12.10.2018 18:35:38

Сообщение Ildus »

Ой! То есть я имел ввиду простую программу и программу
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Бред какой-то ... Все работает.
ИзображениеИзображение
Просто запускай из консоли..
(Все что выше Begin можно выкинуть )
Зы
:idea: Чуть не забыл ! :idea:
Для Windows вначале программы нужно добавить {$APPTYPE CONSOLE}.
---------------------------
{$APPTYPE XXX} Выбор типа приложения. XXX=
Console – консольное.
GUI – графическое.
("По умолчанию" обычно GUI отсюда и глюк )
Последний раз редактировалось Alex2013 17.01.2020 20:00:25, всего редактировалось 1 раз.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Ildus писал(а):простую программу и программу

Очень толково пояснили... :D
Для консольных программ специально создаются файлы стандартного ввода и стандартного вывода. Для сегодняшних программ - клавиатура и консоль. Эти файлы берутся из окружения среды запуска. Для графических приложений - это уже не файлы, а совершенно индивидуальные девайсы, другой принцип работы. Поэтому в графприложениях таких файлов и нет, потому что их и правда нет - другой принцип работы.
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Кстати недавно вспомнил этот "хак"..

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
begin
AllocConsole;
   try
    IsConsole := True;
    SysInitStdIO;
      Writeln(UTF8ToConsole('123 нажмите ентер'));
      Readln;
   finally
    FreeConsole;
   end;
end;


Открывает "временную " консоль в GUI приложении ("Хак" ясное из разряда "только для Windows" , в Линуксе Writeln всегда и так работает, только что-бы увидеть результат его применения, запускать прогу нужно из под консоли ) ... иногда очень полезно, для упрощения отладки в сложных для обычной отладки кусках кода . Есть только один недостаток второй раз открыть после выполнения FreeConsole; у меня не получилось, но для отладки можно просто не закрывать ... Запускать нужно вне IDE Лазаруса .
Ildus
новенький
Сообщения: 40
Зарегистрирован: 12.10.2018 18:35:38

Сообщение Ildus »

Всем спасибо за ответы и помощь. Я переустановил Lazarus на диск C: (с Windows) и все заработало, проблема, видимо, была в доступе к консоли.
Ответить