Максимальная длина аргументов командной строки, передаваемых консольному приложению Delphi - PullRequest
6 голосов
/ 04 марта 2011

Существует ли максимальный предел длины строк, передаваемых в консольное приложение Delphi? Я думаю о передаче большого количества данных JSON. Я бы прочитал данные с помощью функции ParamStr (x).

Ответы [ 3 ]

12 голосов
/ 04 марта 2011

Максимальная длина CMD.EXE составляет 8192 символа. Это будет максимальная сумма, которую может получить консольное приложение Delphi из-за ограничения в самом CMD.EXE.

Максимальная длина команды CreateProcess составляет 32767 символов. Это связано со структурой UNICODE_STRING.

ShellExecute / EX ограничивается INTERNET_MAX_URL_LENGTH, который, как упоминал Gamecat, составляет 2047 символов, если вы не работаете в Win95; там предел только MAX_PATH.

Для получения дополнительной информации см. сообщение в блоге Раймонда Чена

8 голосов
/ 04 марта 2011

Командная строка ограничена ОС до 2047 символов.

Если вы хотите использовать больше данных, вы можете использовать файл.

1 голос
/ 06 марта 2011

Для «большого количества данных» использование ParamStr может быть слишком ограниченным. Рассматривали ли вы использовать (анонимный) канал ? Вот отправная точка:

Запустите два процесса и соедините их с конвейером в Delphi

...