Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Использование пакетных файлов в Delphi: работа с параметрами и пробелами

Delphi , Интернет и Сети , Браузер

Проблема работы с параметрами в пакетных файлах (batch-файлах) в среде Delphi заключается в том, что если параметры содержат пробелы, они могут неправильно интерпретироваться командной строкой. Это приводит к тому, что каждый параметр может быть разделён на несколько подпараметров, что вызывает ошибки при выполнении скрипта.

Вот пример batch-файла, который используется для управления переводом программ:

ECHO Scan for new ressources
%MLDIR%\Ml7Build.exe s %1%

ECHO Import glossary for new translation
%MLDIR%\MlBuild.exe i %2%

ECHO Create translated application
%MLDIR%\Ml7Build.exe b %3%

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

Для решения этой проблемы можно использовать следующий подход:

  1. Объединить все параметры в одну строку, заключив их в кавычки. Это позволит передать их как один аргумент.

Пример кода на Object Pascal (Delphi):

uses
  ShellAPI;

var
  param1, param2, param3: string;
begin
  param1 := '"' + ExtractFileName(hMLProj) + '"';
  param2 := '-f: "' + MLWorkDir + 'Prev_' + ExtractFileName(hMLProj) + '" -settings:Auftrag_Test.importsettings-method:2 -overwri:3 -error:2 "' + ExtractFileName(hMLProj) + '" ';
  param3 := '"' + ExtractFileName(hMLProj) + '"';
  ShellExecute(0, 'open', PChar(MLWorkDir + '__AutomatedTranslationFUBAR.bat'), PChar(param1 + ' ' + param2 + ' ' + param3), nil, SW_SHOWDEFAULT);
end;
  1. Альтернативно, можно использовать функцию CreateProcess, которая предоставляет более тонкий контроль над процессом запуска.

В batch-файлах для работы с параметрами, содержащими пробелы, используется специальный синтаксис %~n, где n — это номер параметра (1-9). Синтаксис %~1 удаляет любые кавычки, окружающие параметр.

Обновлённый пример batch-файла:

ECHO Scan for new resources
%MLDIR%\Ml7Build.exe s "%~1"

ECHO Import glossary for new translation
%MLDIR%\MlBuild.exe i "%~2"

ECHO Create translated application
%MLDIR%\Ml7Build.exe b "%~3"

Параметры, передаваемые в batch-файл, должны быть заключены в двойные кавычки, если они содержат разделители, такие как пробелы.

Использование этих подходов позволит корректно работать с параметрами в пакетных файлах из приложений, написанных на Delphi.

Создано по материалам из источника по ссылке.

Проблема заключается в том, что при использовании пакетных файлов в среде Delphi для передачи параметров с пробелами необходимо их заключать в кавычки, чтобы избежать неправильной интерпретации командной строкой.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:26:47/0.0019111633300781/0