Jer*_*dge 4 delphi string-comparison paramstr
当您阅读时ParamStr()
,它由每个参数之间的空格所限定。但是,我已经看到许多命令行参数,它们接受参数名称及其配对值之间的空格,同时也接受等号=
,甚至不包含任何分隔符(仅以param名称作为前缀)或不包含任何值。
以下是一些可能的参数字符串的示例:
-name value
/name value
-name=value
/name=value
-namevalue
/namevalue
-name -nextname
/name /nextname
-name="value with spaces"
/name="value with spaces"
Run Code Online (Sandbox Code Playgroud)
...等等。
我想做的是两件事都相关...检查参数名称是否存在,并读取参数的值。例如...
if ParamExists('ParamName') then
SomeString:= ParamValue('ParamName')
else
SomeString:= 'SomeOtherString';
Run Code Online (Sandbox Code Playgroud)
Delphi中有什么可以做到的吗?如果没有,我该怎么做?我在搜索时发现的所有内容都将我引到相同的基本示例:
for i := 0 to ParamCount do
ShowMessage(ParamStr(i));
Run Code Online (Sandbox Code Playgroud)
它还需要区分大小写。我正在寻找特别喜欢的东西,OSQL
并且类似的命令行工具使用的“ -s”可能不同于“ -S”。
问题是,如果我使用空格作为分隔符,那么我将不知道如何识别它何时是前一个参数的一部分,因为它将空格分隔。我该如何解决?
我敢肯定,这也是一个标准术语,它是命令行参数的常见格式。但我不知道如何使用just正确阅读它们ParamStr
。似乎ParamStr
没有达到通常的用途。
需要明确的是,我并不一定需要支持上面的每个示例-这些只是我以前见过的示例。
ParamStr()
(因此FindCmdLineSwitch()
)不够灵活,无法处理您显示的所有示例。您将必须调用Win32 API GetCommandLine()
函数并手动对其进行解析。
归档时间: |
|
查看次数: |
4634 次 |
最近记录: |