У меня есть 2 вопроса:
1. Есть ли такой оператор, который перезапускает программу?
2. Как сделать ссылку на другую программу, к примеру, нажимаешь на кнопку и вылезает совершенно другая программа?
Заранее спс)
Другие языки программирования и технологии
Вопрос про Free Pascal!!! помогите плз!
Если вы пишете программу под Windows, то самый простой и пока ещё не устаревший способ - использовать функцию WinAPI ShellExecute.
Пример.
На форме расположены две кнопки. При нажатии Button1 открывается стандартный Блокнот.
При нажатии на Button2, программа перезапускает сама себя. Точнее, запускается второй экземпляр этой программы, а затем завершает работу первый. (Честное слово, не понимаю, зачем это нужно) .
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, Forms, StdCtrls, ShellAPI, Windows, SysUtils;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
{Запускает блокнот Windows}
ShellExecute(0, 'open', 'notepad.exe', nil, nil, SW_SHOW);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
{Сбрасываете на диск кеши всех открытых для записи файлов}
{Закрываете все открытые программой файлы, потому что запускаемый
второй экземпляр программы может сразу же открывать эти же файлы}
{Освобождаете все динамически выделенные ресурсы}
{Запускаете второй экземпляр программы}
ShellExecute(0, 'open', PChar(ExtractFileName(Application.ExeName)),
nil, PChar(ExtractFilePath(Application.ExeName)), SW_SHOW);
{Завершаете работу текущего экземпляра программы}
Close;
end;
end.
Пример.
На форме расположены две кнопки. При нажатии Button1 открывается стандартный Блокнот.
При нажатии на Button2, программа перезапускает сама себя. Точнее, запускается второй экземпляр этой программы, а затем завершает работу первый. (Честное слово, не понимаю, зачем это нужно) .
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, Forms, StdCtrls, ShellAPI, Windows, SysUtils;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
{Запускает блокнот Windows}
ShellExecute(0, 'open', 'notepad.exe', nil, nil, SW_SHOW);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
{Сбрасываете на диск кеши всех открытых для записи файлов}
{Закрываете все открытые программой файлы, потому что запускаемый
второй экземпляр программы может сразу же открывать эти же файлы}
{Освобождаете все динамически выделенные ресурсы}
{Запускаете второй экземпляр программы}
ShellExecute(0, 'open', PChar(ExtractFileName(Application.ExeName)),
nil, PChar(ExtractFilePath(Application.ExeName)), SW_SHOW);
{Завершаете работу текущего экземпляра программы}
Close;
end;
end.
1. Перезапускает? В полном смысле - нет. Можно использовать безусловный переход на начало - но тогда не будут обнуляться переменные; или вызвать програму из себя - но тогда это будет отдельный процесс, к тому же, вызывавший не завершится до конца работы вызванного (хотя есть варианты :) ). А вообще - делай основной цикл и обнуляй переменные, и будет тебе счастье.
2. Есть функции Exec, Shell, FpExec* (вместо звездочки - куча вариантов) , ExecuteProcess и, подозреваю, еще несколько - в зависимости от используемой ОС и требуемой функциональности. Подробности - в гугле.
2. Есть функции Exec, Shell, FpExec* (вместо звездочки - куча вариантов) , ExecuteProcess и, подозреваю, еще несколько - в зависимости от используемой ОС и требуемой функциональности. Подробности - в гугле.
ты Делфи поставь, там есть. А паскаль ну нет его уже нет
Игорь Романенко
В Free Pascal есть и Delphi, и "Turbo Pascal", и пара диалектов Object Pascal, а так же свой вариант Паскаля.
Похожие вопросы
- Free Pascal помогите кто шарит
- free pascal. пожалуйста скиньте код конкулятора для free pascal
- Объясните пожалуйста вот этот алгоритм в Free Pascal
- Значит такой вопрос. Для чего нужен компилятор Free pascal. Не я понимаю что это язык программирования и...
- Какая разница между Turbo Pascal и free Pascal?
- В чем заключается отличия Turbo Pascal от Free Pascal&
- В чём разница между free pascal и pascal
- В чём отличия Pascal ABC, Free Pascal, Lazarus, Delphi?
- Помогите написать программу на Free pascal
- Срочно!!!!Программирование на Borland Pascal. Срочно помогите!!!!Плз!!!