在我的Delphi应用程序中,我想添加命令行参数,以便在登录屏幕中自动设置一些参数。
目前,我有一个登录屏幕,用户设置一些信息(如服务器,数据库,用户,密码,AuthenticationType,AUtoLogin,…)。
我使用MRU填充字段。无论如何,在大型组织中,需要不要让用户选择任何信息。为此,我在场景中可以做的最简单的事情是使用命令行参数。
我的问题是你如何建议选择命令行参数?我的意思是说,我应该采取“立场”方法还是采取一些“标签”方式,例如:
MyProject.exe -s:MYSERVER -d:DATABASE
要么
MyProject.exe MYSERVER DATABASE
在第一种情况下,我需要使用ParamStr循环遍历所有参数,并且“解码”它们是什么。如果他们以“-s:”开头,我知道接下来是服务器名称。第二个更加快速和肮脏,但可能更有效。
如何管理包含“空格”的参数?是否可以使用ParamStr自动拦截它们,还是手动处理? (我的意思是有一种方式来自动告诉ParamStr一个参数包含一个空格(如使用大括号或东西)。
最好的做法是什么?
解决方法
Should I go for a “position” approach or for some “tag” approach?
毫无疑问,你应该标记你的命令行参数。位置方法不允许有足够的灵活性来省略参数。标签使用户更容易理解参数,特别是在返回到之前编写的代码时。标签应该是自我记录的。
当您具有未标记参数的一个常见情况是当您具有文件名或文件名列表时。
How to manage parameters that contain a “space”?
Windows约定是通过在参数周围放置双引号来转义空格。 ParamStr解析将会识别这些并相应地解析参数。您在ParamStr(i)中看到的是引号被删除的参数。
RTL提供了一个有用的帮助函数,以帮助您的命令行参数解析:FindCmdLineSwitch
。