【问题标题】:Creating an array with variables使用变量创建数组
【发布时间】:2011-09-21 18:12:13
【问题描述】:

我对 Delphi 比较陌生,所以请多多包涵。基本上,我需要根据我是在英语还是法语翻译环境中进行测试,将变量设置为不同的值。这些 TC 脚本中的所有菜单都通过它们的名称访问,在法语中它们是不同的。但是,我可以通过它们在菜单中的位置来访问它们 - 例如 [4|2]

我有一个常量列表,并想设置一个数组以将 MenuItem1 设置为 File|New[4|2],具体取决于 tcDecimalSeparator <> '.' 的值(设置为声明的常量)。

这有意义吗?什么是最简单/最好的方法?

我知道我可能可以通过数据驱动测试来设置这一切,但我不想在发布之前过多地修改脚本。

【问题讨论】:

  • 您真的在创建数组并从中选择值时遇到问题吗?或者您是在问如何测试多语言程序?另外,请记住,如果您正在编写 TestComplete 脚本,那么您并没有真正使用 Delphi。您正在使用 看起来 像 Delphi 的东西,但实际上并没有所有相同的功能,所以这个问题上的“delphi”标签可能是一个红鲱鱼。
  • 有效点。我更熟悉 VB,并试图通过这个来感受我的方式。我将删除 Delphi 标签 - 感谢您的输入!

标签: delphi testcomplete


【解决方案1】:

不,您提出的解决方案没有意义。首先,基于当前小数分隔符的切换是不可靠的。其次,如果你已经知道菜单项的位置,而且不管程序是什么语言,它们总是有效的,那为什么还要乱用英文菜单标题呢?一直使用菜单位置。 (或者,如果您已经设置了一些东西来根据语言选择菜单文本,为什么不也使用法语菜单文本,而不是在英语 text 和法语 positions之间切换>?)

按照您的建议,您可以设置菜单标识符的二维数组:

const
  TLanguage = (lEnglish, lFrench);
  TUIElement = (uiFileNew, uiFileOpen, ...);

  MenuIDs = array[TUIElement] of array[TLanguage] of string = (
    ('File|New', '[4|2]'),
    ('File|Open', '[4|3]')
  );

然后,当你想要一个字符串时,选择与你的 UI 元素对应的项目,然后选择当前语言的字符串:

if tcDecimalSeparator = '.' then
  CurrentLang := lEnglish
else
  CurrentLang := lFrench;

UseMenuItem(MenuIDs[uiFileNew, CurrentLang]);

【讨论】:

  • 我自己也想过这个问题……最初编写脚本的人已经按位置注释掉了菜单项,而是切换到使用菜单文本,所以我认为它不是首选访问方式!我的猜测是,当时应用程序发生了很大变化,以至于她很难记住每次都更改值。我很感激这些信息!
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2011-04-05
相关资源
最近更新 更多