Робота з командним рядком в delphi
У цьому невеликому уроці ми розглянемо роботу з командним рядком в Delphi.
Безпосередньо передачу команд в командую рядок операційної системи Windows в Delphi допомагає реалізувати процедура WinExec. Взагалі, WinExec дозволяє звертатися до будь-яких виконуваних файлів з можливістю передачі їм будь-яких параметрів. Як самого примітивного прикладу використання цієї процедури можна привести запуск калькулятора Windows:
[Cc lang = "delphi»] WinExec (PAnsiChar ( 'calc.exe'), SW_SHOWNORMAL); [/ cc]
Розглянемо параметри, які необхідно передавати WinExec:
- Команда, яка буде виконана. Тобто тут ми можемо вказати, наприклад, який-небудь файл, який необхідно запустити. Тип цього параметра - PAnsiChar, а відповідно рядки можна передавати тільки приводячи їх до типу PAnsiChar.
- Параметр, що характеризує спосіб відображення відкривається вікна. Якщо вказати SW_SHOWNORMAL. то відкривається вікно буде відображено за замовчуванням, а якщо вкажемо SW_HIDE. то вікно буде приховано, що буває зручно використовувати при зверненні до командного рядка, тому що відображати її на частку секунди немає ніякого сенсу.
Тепер навчимося звертатися до командного рядка, використовуючи процедуру WinExec. Розглянемо нескладний приклад:
[Cc lang = "delphi»] WinExec (PAnsiChar ( 'cmd / c md f: \ t'), SW_HIDE); [/ cc]
Як ви бачите, ми вказали SW_HIDE, щоб не відображати вікно консолі. Звернемо увагу на формування самої команди.
- Спочатку ми вказуємо «cmd», що говорить про те, що ми запустимо командний рядок.
- Потім ми вказуємо «/ c», для того щоб, після виконання команди, наша командна рядок закрилася.
- Ну а далі йде сама операція для командного рядка - «md f: \ t». Ця команда створює папку «t» на диску «f: \».
Для того, щоб виконати кілька команд послідовно, можна використовувати символ «# 038;», яким ми можемо розділити кілька різних команд для послідовного виконання.
[Cc lang = "delphi»] WinExec (PAnsiChar ( 'cmd / c md f: \ t # 038; md f: \ t1'), SW_HIDE); [/ cc]
Невеликий приклад компіляції вихідного dpr файлу Delphi за допомогою командного рядка:
[Cc lang = "delphi»] procedure CompileDelphiCode (filename: string);
var
c: ansistring;
begin
c: = 'cmd / c dcc32 -b -q -h- -w- «' + filename + '»';
WinExec (PAnsiChar (c), SW_Hide);
end;
procedure TForm2.Button1Click (Sender: TObject);
begin
CompileDelphiCode ( 'f: \ t.dpr');
end; [/ cc]
Цією процедурою необхідно передати єдиний параметр - абсолютний або відносний шлях до вихідного dpr файлу. В результаті буде запущено компілятор Delphi «dcc32», який скомпілює вихідний код в папку з зазначеним dpr файлом. Якщо у вас виникли проблеми з тим, що командний рядок не знає, що таке dcc32, то вкажіть замість dcc32 абсолютний шлях до самого компілятора, який лежить в папці з вашої середовищем Delphi в папці bin і називається «dcc32.exe».