Delphi 使用变量创建数组

Delphi 使用变量创建数组,delphi,testcomplete,Delphi,Testcomplete,我对德尔福比较陌生,所以请容忍我。基本上,我需要根据是否在英语或法语翻译的环境中进行测试,将变量设置为不同的值。这些TC脚本中的所有菜单都是通过它们的名称访问的,而在法语中它们并不相同。但是,我可以通过它们在菜单中的位置来访问它们,例如[4 | 2] 我有一个常量列表,希望设置一个数组,根据tcDecimalSeparator.”的值将MenuItem1设置为File | New或[4 | 2]。(设置为声明的常量) 这有意义吗?最简单/最好的方法是什么 我知道我可能可以通过数据驱动测试来设置这

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

我有一个常量列表,希望设置一个数组,根据
tcDecimalSeparator.”的值将MenuItem1设置为
File | New
[4 | 2]
(设置为声明的常量)

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


我知道我可能可以通过数据驱动测试来设置这些,但我不想在发布之前对脚本进行太多的返工。

不,您提出的解决方案没有意义。首先,基于当前十进制分隔符的切换不可靠。第二,如果你已经知道菜单项的位置,而且不管程序的语言如何,菜单项总是有效的,那么为什么还要乱用英文菜单标题呢?只需始终使用菜单位置。(或者,如果您已经设置了基于语言选择菜单文本的功能,为什么不同时使用法语菜单文本,而不是在英语文本和法语位置之间切换?)

要执行您的建议,您可以设置菜单标识符的二维数组:

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]);

您真的在创建数组和从中选择值时遇到困难吗?还是你在问如何测试多语言程序?另外,请记住,如果您正在编写TestComplete脚本,那么您并不是真正使用Delphi。您使用的东西看起来像Delphi,但实际上并没有所有相同的功能,所以这个问题上的“Delphi”标签可能是一条红鲱鱼。这一点是正确的。我更熟悉VB,并试图通过它找到自己的方法。我将删除Delphi标记-感谢您的输入!我自己也想过。。。最初编写脚本的人按位置注释了菜单项,转而使用菜单文本,因此我认为这不是访问它的首选方式!我的猜测是,当时应用程序变化太大,以至于她很难记住每次都要更改值。我很感激这些信息!