Показать сообщение отдельно
  #7  
Старый 26.01.2015, 20:36
Аватар для madMonia
madMonia madMonia вне форума
Новичок
 
Регистрация: 25.02.2014
Сообщения: 50
Версия Delphi: Delphi XE3
Репутация: 2545
По умолчанию

Цитата:
Сообщение от Alloc
Из всего этого меня больше всего интересует вопрос о том, успеет ли выполнить компьютер все команды о которых я говорил поочередно?
Аа вот в чем дело. Конечно, если вы используете вызов сторонних приложений через WinExec, то вы не будете знать, завершила ли запрошенная вами команда работу или нет, а так же вы не будете знать, успешно она завершила работу или нет.

Эту задачу можно попытатся решить в лоб, просто проверяя ожидаемый результат выполнения задачи. Например, если задача создать файл - нужно проверить, что в каталоге появился соответствующий файл нужного размера. Однако, иногда проверить результат выполнения задачи довольно сложно, а то и вовсе не возможно. Кроме того, если произойдет какая-то ошибка, то вы не будете знать, что за ошибка произошла, и как вам ее исправить. Другими словами такой подход представляется крайне нежелательным.

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

Во-первых, желательно проверить, можно ли выполнить операции с помощью Делфи кода, не привлекая сторонние приложения. В частности, создать\переименовать\копировать файл можно. Поскольку я не знаю, какие у вас конкретно задачи, то не могу сказать определенне.

Во-вторых, WinExec - это устаревшая функция, вместо нее можно использовать CreateProccess - она позволяет дождаться конца выполнения команды и проверить результат.
__________________
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров
Ответить с цитированием