如何通过多种分隔符在Delphi中解析ParamStr参数值?

2026-04-10 16:552阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计490个文字,预计阅读时间需要2分钟。

如何通过多种分隔符在Delphi中解析ParamStr参数值?

当您读取ParamStr()时,它将移除每个参数之间的空格。然而,我已经注意到,即使命令行参数接受参数名称及其对应值之间的空格,它仍然接受equals+等于sign,直到没有deliminator(仅以param名称为前缀)为止。

如何通过多种分隔符在Delphi中解析ParamStr参数值?

当您阅读ParamStr()时,它会被每个参数之间的空格所消除.但是,我已经看到许多命令行参数接受参数名称与其配对值之间的空格,同时还接受equals = sign甚至没有deliminator(只是以param名称为前缀)或没有值.

以下是可能的参数字符串的一些示例:

-name value /name value -name=value /name=value -namevalue /namevalue -name -nextname /name /nextname -name="value with spaces" /name="value with spaces"

…等等.

我想做的是两件相关的事情……检查参数名是否存在,并读取参数的值.例如…

if ParamExists('ParamName') then SomeString:= ParamValue('ParamName') else SomeString:= 'SomeOtherString';

Delphi中有什么东西可以做到这一点吗?如果没有,我该怎么做?我在搜索时发现的一切只是让我得到了同样的基本例子:

for i := 0 to ParamCount do ShowMessage(ParamStr(i));

它还需要区分大小写.我正在寻找特别喜欢OSQL和类似命令行工具的东西,其中’-s’可能与’-S’不同.

问题是如果我使用空格作为分隔符,我不知道如何识别它是前一个参数的一部分,因为它用空格分割它们.我该如何解决这个问题?

我确信这也是一个标准术语,它是命令行参数的常见格式.但我不知道如何使用ParamStr正确阅读它们. ParamStr似乎没有达到它通常使用的水平.

要清楚,我不一定需要支持上面的每一个例子 – 这些只是我以前见过的例子.

ParamStr()(以及因此FindCmdLineSwitch())不够灵活,无法处理您显示的所有示例.您必须调用Win32 API GetCommandLine()函数并手动解析它.
标签:deliminato

本文共计490个文字,预计阅读时间需要2分钟。

如何通过多种分隔符在Delphi中解析ParamStr参数值?

当您读取ParamStr()时,它将移除每个参数之间的空格。然而,我已经注意到,即使命令行参数接受参数名称及其对应值之间的空格,它仍然接受equals+等于sign,直到没有deliminator(仅以param名称为前缀)为止。

如何通过多种分隔符在Delphi中解析ParamStr参数值?

当您阅读ParamStr()时,它会被每个参数之间的空格所消除.但是,我已经看到许多命令行参数接受参数名称与其配对值之间的空格,同时还接受equals = sign甚至没有deliminator(只是以param名称为前缀)或没有值.

以下是可能的参数字符串的一些示例:

-name value /name value -name=value /name=value -namevalue /namevalue -name -nextname /name /nextname -name="value with spaces" /name="value with spaces"

…等等.

我想做的是两件相关的事情……检查参数名是否存在,并读取参数的值.例如…

if ParamExists('ParamName') then SomeString:= ParamValue('ParamName') else SomeString:= 'SomeOtherString';

Delphi中有什么东西可以做到这一点吗?如果没有,我该怎么做?我在搜索时发现的一切只是让我得到了同样的基本例子:

for i := 0 to ParamCount do ShowMessage(ParamStr(i));

它还需要区分大小写.我正在寻找特别喜欢OSQL和类似命令行工具的东西,其中’-s’可能与’-S’不同.

问题是如果我使用空格作为分隔符,我不知道如何识别它是前一个参数的一部分,因为它用空格分割它们.我该如何解决这个问题?

我确信这也是一个标准术语,它是命令行参数的常见格式.但我不知道如何使用ParamStr正确阅读它们. ParamStr似乎没有达到它通常使用的水平.

要清楚,我不一定需要支持上面的每一个例子 – 这些只是我以前见过的例子.

ParamStr()(以及因此FindCmdLineSwitch())不够灵活,无法处理您显示的所有示例.您必须调用Win32 API GetCommandLine()函数并手动解析它.
标签:deliminato