Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вызов командной строки  (Прочитано 11601 раз)
0 Пользователей и 1 Гость смотрят эту тему.
djein
Гость
« : 25-11-2009 23:29 » 

Как можно сделать в Delphi обращение к командной строке? Есть ли какая-нибудь функция?
Например: существует адрес папки, и неодходимо с помощью команды DIR в определенный файл записать все файлы из этой папки с расширениями...
« Последнее редактирование: 26-11-2009 03:26 от Sel » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 26-11-2009 04:20 » 

ShellExecute()

Кошерней было бы открыть директорию, открыть файл и пролистать содержимое директории.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #2 : 26-11-2009 04:27 » 

Запускаешь cmd.exe с параметрами командной строки. Для запуска можно воспользоваться функциями CreateProcess, ShellExecute (MSDN)

А вообще лучше, как посоветовал RXL или еще удобнее воспользоваться функцией SHFileOperation (MSDN), тогда не нужно перечисление файлов FindFirst, FindNext.
Записан
djein
Гость
« Ответ #3 : 30-11-2009 07:44 » 

Подскажите, пожалуйста, как воспользоваться функцией SHFileOperation (MSDN)?
« Последнее редактирование: 30-11-2009 09:00 от Sel » Записан
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #4 : 30-11-2009 19:14 » 

Хмм... А самому почитать MSDN слабо?
Вот примеры:
Код:
uses ShellAPI;

//Копирование каталога
procedure CopyDir(SourceDir, DestDir: string);
var
  shlfl: TSHFileOpStruct;
  s: string;
  sr: TSearchRec;
begin
  If FindFirst(DestDir, faDirectory, sr) <> 0 then
  CreateDir(DestDir)
  else
  FindClose(sr);

  shlfl.Wnd := 0;
  shlfl.wFunc := FO_COPY;
  s := SourceDir + '*.*' + #0#0;
  shlfl.pFrom := PChar(s);
  shlfl.pTo := PChar(DestDir + '\');
  shlfl.fFlags := FOF_NOCONFIRMATION + FOF_NOERRORUI;
  shlfl.fAnyOperationsAborted := False;
  SHFileOperation(shlfl);
end;

//Удаление каталога
procedure DeleteDir(Dir: string);
var
  shlfl: TSHFileOpStruct;
  F:TSearchRec;
  s: string;
begin
  If FindFirst(Dir, faDirectory, F) <> 0 then
  exit
  else
  FindClose(F);
  shlfl.Wnd := 0;
  shlfl.wFunc := FO_DELETE;
  s :=  Dir + '\*.*' + #0#0;
  shlfl.pFrom := PChar(s);
  shlfl.pTo := nil;
  shlfl.fFlags := FOF_NOCONFIRMATION + FOF_NOERRORUI;
  shlfl.fAnyOperationsAborted := False;
  SHFileOperation(shlfl);
  RemoveDirectory(PChar(Dir));
end;
Записан
glGizma
Гость
« Ответ #5 : 14-04-2010 07:41 » 

uses ShellApi,
Код:
ShellExecute(handle, nil,'cmd.exe','control userpasswords','', SW_SHOWNORMAL);
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines