Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 670

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!

Есть некая программа с формой,
можно ли как нибудь запускать её коммандной строкой, без отображения формы на экране?

slava863 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: slava863 (статус: Посетитель)
Вопрос отправлен: 20 января 2010, 16:23
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, slava863!
Все достаточно просто. открываем dpr файл и находим там три строки вида
Application.Initialize;
Application.CreateForm(...);
Application.Run;
эти строки создают и запускают окно.
мы же делаем так - завернем их в условие.

if (paramCount >=1) and (paramstr(1) = 'console') then //запустили с параметром console
begin
  AllocateConsole();//включим консоль.
  writeln('write to console!');
//делаем другую работу.
  FreeConsole();
end
else begin
//тут старые 3 (а может и больше их) строки с Application.
end;
end;

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 21 января 2010, 15:38
Оценка за ответ: 5

Комментарий к оценке: Спасибо

Мини-форум вопроса

Всего сообщений: 26; последнее сообщение — 28 января 2010, 17:55; участников в обсуждении: 5.

Страницы: [1] [2] [Следующая »]

Жикльор

Жикльор (статус: 5-ый класс), 20 января 2010, 17:21 [#1]:

Просто сделай ее консольной.
File - New - Other - Console Application
И будет выводится не форма а команд. строка
Если бы строители строили дома так, как программисты пишут программы, то первый же дятел уничтожил бы цивилизацию.
Вадим К

Вадим К (статус: Академик), 20 января 2010, 17:28 [#2]:

Или хочется, что бы можно было запускать и как программу с формой, так и как консоль?
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 20 января 2010, 19:59 [#3]:

Цитата (slava863):

Есть некая программа с формой

Чья программа? Исходники есть?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
vlsavkin

vlsavkin (статус: 2-ой класс), 21 января 2010, 02:08 [#4]:

Есть программы Photoshop и MediaPlayer Classic как их запустить в консольном режиме?
slava863, уточните вопрос, пожалуйста
slava863

slava863 (статус: Посетитель), 21 января 2010, 15:13 [#5]:

программа поиска и замены файлов
Я напишу поддержку коммандной строки, надо что бы можно было запускать её с коммандной строки (консольном или фоновом режиме), короче она не должна отображаться на экране
slava863

slava863 (статус: Посетитель), 21 января 2010, 15:14 [#6]:

Хочу запускать её и с формой и как консоль
min@y™

min@y™ (статус: Доктор наук), 21 января 2010, 15:21 [#7]:

Так запускать надо как КОНСОЛЬНОЕ приложение или просто как оконное приложение с невидимой главной формой?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
vlsavkin

vlsavkin (статус: 2-ой класс), 21 января 2010, 15:45 [#8]:

Как-нибудь так не пойдет? Ключ -r, с которым запускается программа переключает режим
program Project1;
{$APPTYPE CONSOLE}

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
if paramstr(1)='-r' then
begin
FreeConsole;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end else
begin
writeln('jggiu');
readln;
end;
end.
slava863

slava863 (статус: Посетитель), 22 января 2010, 15:04 [#9]:

Можно с невидемой главной формой.
vlsavkin

vlsavkin (статус: 2-ой класс), 22 января 2010, 15:10 [#10]:

slava863, тогда в исходном коде проекта добавьте строчку
application.ShowMainForm:=false;
slava863

slava863 (статус: Посетитель), 22 января 2010, 15:10 [#11]:

vlsavkin спасибо идея хорошая но немного не то, так видемо придётся пол программы переписывать.
slava863

slava863 (статус: Посетитель), 22 января 2010, 15:26 [#12]:

Всем спасибо за участие.
Я узнал информации даже больше чем хотел.
slava863

slava863 (статус: Посетитель), 22 января 2010, 16:15 [#13]:

Вопрос на ту же тему, ниже код.
В Console.pas поиск из консоли, а в Search_and_replacement.pas на форме, как сделать чтобы по ключу в коммандной строке выполнялся код из Console.pas (в консоле),а если нет ключа то по Search_and_replacement.pas форме

program Search_and_replacement1;
 
uses
  Forms,
  Search_and_replacement in 'Search_and_replacement.pas' {Form1},
  Console in 'Console.pas';
 
{$R *.res}
 
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
//  Application.ShowMainForm:=false;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end;
 
 end.
vlsavkin

vlsavkin (статус: 2-ой класс), 23 января 2010, 12:30 [#14]:

slava863, все зависит от того как выглядит console.pas, может там одна главная процедура ИскатьФайлы, которую и надо будет вызвать.
slava863

slava863 (статус: Посетитель), 27 января 2010, 11:09 [#15]:

Вадим К:
Я решил воспользоваться твоим предложением,
но при компиляции вылазит ошибка
[DCC Error] Search_and_replacement.dpr(13): E2003 Undeclared identifier: 'AllocateConsole'



program Search_and_replacement;
uses
  Forms,  SysUtils,
  Search_and_replacement_ in    'Search_and_replacement_.pas' {Form1},
  Console1 in 'Console1.pas';
 
begin
if (paramCount >=1) then //запустили с параметром console
begin
  AllocateConsole();//включим консоль.
  writeln('write to console!');
  FreeConsole();
end
else begin
     {$R *.res}
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end;
 
 end.
Вадим К

Вадим К (статус: Академик), 27 января 2010, 11:23 [#16]:

Я давно не писал на делфи. если память не изменяет, то эта процедура называется AllocConsole;
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 27 января 2010, 11:27 [#17]:

Цитата (slava863):

[DCC Error] Search_and_replacement.dpr(13): E2003 Undeclared identifier: 'AllocateConsole'


Замени на AllocConsole().
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
slava863

slava863 (статус: Посетитель), 27 января 2010, 11:57 [#18]:

[DCC Error] Search_and_replacement.dpr(13): E2003 Undeclared identifier: 'AllocConsole'

[DCC Error] Search_and_replacement.dpr(16): E2003 Undeclared identifier: 'FreeConsole'
Вадим К

Вадим К (статус: Академик), 27 января 2010, 12:29 [#19]:

вверху, в список uses надо добавить модуль windows
Галочка "подтверждения прочтения" - вселенское зло.
slava863

slava863 (статус: Посетитель), 27 января 2010, 12:42 [#20]:

Спасибо.

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:29
Выполнено за 0.03 сек.