Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 6
1
Delphi 6-7

Запуск разных консольных программ через одну кнопку

25.06.2018, 20:37. Показов 1158. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. Ребята, подскажите пожалуйста как сделать так, что бы при нажатии кнопки примера, а затем нажатии кнопки запустить пример запускался пример который был выбран до этого.
Миниатюры
Запуск разных консольных программ через одну кнопку  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2018, 20:37
Ответы с готовыми решениями:

Запуск метода класса через кнопку
Ужасно стыдно, но я имею очень небольшое представление о работе классов. Да и вообще о Делфи. ...

Запуск внешних консольных программ и скриптов
Как в C/C++ запустить внешнюю программу и подключить к ней на стандартные вход и выход дескрипторы...

Запуск консольных программ из управляющего модуля с получением результатов работы
Запустить консольную программу не проблема, даже получить от нее все, что она шлет в стандартный...

Объединить три графика из разных программ в одну
Нужно объединить три графика из разных программ в одну, так, что-бы они рисовались все вместе -...

6
Модератор
9246 / 6027 / 2376
Регистрация: 21.01.2014
Сообщений: 25,771
Записей в блоге: 3
25.06.2018, 21:20 2
скомпилировать набранный исходный код утилитой DCC32.exe и запустить его командой CreateProcess
0
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 6
25.06.2018, 22:08  [ТС] 3
это для одного примера и создания самого файла примера. А мне нужно, что бы при выборе на вкладках программы можно было запускать эти примеры через кнопку "запустить пример". Например что бы запустить пример я делаю так (Смотрите изображения). Но это не запуск первого пример, это запуск ехе указного пути. Помогите плиз.
Миниатюры
Запуск разных консольных программ через одну кнопку  
0
Модератор
9246 / 6027 / 2376
Регистрация: 21.01.2014
Сообщений: 25,771
Записей в блоге: 3
25.06.2018, 23:13 4
А что непонятного-то? Имейте в отдельной папке несколько файлов исходных текстов, которые будете загружать в Мемо и соответствующие скомпилированные ехе-шники, которые будете запускать при необходимости...
0
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 6
26.06.2018, 02:47  [ТС] 5
У меня есть текстовые файлы и ехе-шники тоже. Проблема в том, что при нажатии кнопки "Запустить пример" запускается только один ехе-шник и без разницы какая кнопка нажата (пример 1 или 2 или 3). Просто я думаю, нужно как-то сделать проверку межу кнопками "пример" и кнопкой "запустить пример". Типа, есть нажата кнопка "пример 1" то при нажатии кнопки "запустить пример" запуститься ехе-шник пример 1.
0
Модератор
9246 / 6027 / 2376
Регистрация: 21.01.2014
Сообщений: 25,771
Записей в блоге: 3
26.06.2018, 06:13 6
Лучший ответ Сообщение было отмечено pudios как решение

Решение

0. Исходники называются p1.dpr, p2.dpr, p3.dpr. Соответственно, скомпилированные программы называются р1.ехе, р2.ехе, р3.ехе. Лежит все это дело в папке Examples, которая является подкаталогом каталога основного проекта.
1. В секции private класса объявляем переменную Exe_Name, в которую будем записывать путь к исполняемому файлу примера
2. Для кнопок загрузки примеров устанавливаем соответствующее свойство Tag. Кнопка Example 1 -> Tag = 1, Example 2 -> Tag = 2, Example 3 -> Tag = 3
3. Создаем обработчик события OnClick для первой кнопки и пишем в нем:
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
var Prg_Name: String;
begin
 Prg_Name := Format('%sExamples\p%d.dpr', [ExtractFilePath(ParamStr(0)), TButton(Sender).Tag]);
 Exe_Name := ChangeFileExt(Prg_Name, '.exe');
 Memo1.Lines.LoadFromFile(Prg_Name);
end;
4. Назначаем этот обработчик события для оставшихся 2-х кнопок
5. Создаем обработчик OnClick для кнопки Run и пишем в нем
Delphi
1
2
3
4
procedure TForm1.Button4Click(Sender: TObject);
begin
 ShellExecute(0, 'open', PChar(Exe_Name), nil, nil, SW_SHOW);
end;
Предварительно в секцию uses добавить модуль ShellAPI
Собственно и все
Полный код модуля
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ShellAPI;
 
type
  TForm1 = class(TForm)
    Button1: TButton;  //Tag = 1
    Button2: TButton;  //Tag = 2
    Button3: TButton;  //Tag = 3
    Button4: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private { Private declarations }
    Exe_Name: String;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var Prg_Name: String;
begin
 Prg_Name := Format('%sExamples\p%d.dpr', [ExtractFilePath(ParamStr(0)), TButton(Sender).Tag]);
 Exe_Name := ChangeFileExt(Prg_Name, '.exe');
 Memo1.Lines.LoadFromFile(Prg_Name);
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
 ShellExecute(0, 'open', PChar(Exe_Name), nil, nil, SW_SHOW);
end;
 
end.
Миниатюры
Запуск разных консольных программ через одну кнопку  
1
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 6
26.06.2018, 10:31  [ТС] 7
Спасибо большое тебе. Если бы не ты, я пропал бы. Правда у меня текст выводился через web страницу ну ладно и memo сойдет. Еще раз спасибо тебе.
0
26.06.2018, 10:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2018, 10:31
Помогаю со студенческими работами здесь

Генерация разных событий на одну и ту же кнопку
Добрый день уважаемые форумчане. Нужна ваша помощь. Нужно сделать примерно такое. При клике на...

Слоты от разных классов на одну глобальную кнопку
Здравствуйте, подскажите пожалуйста как задать очередность выполнения слотов привязанных к одной...

Запуск программ в разных версиях Windows 7
Здравствуйте. Подскажите пожалуйста, в чем может быть проблема. У меня установлена Win 7 Ultimate,...

Запуск программ при нажатии на кнопку
Мужики, знаю что вопрос простой и элементарный но для тех кто глубоко изучал С# Я изучал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru