2011-09-21 114 views
1

一个数组我是比较新的德尔福所以请多多包涵。基本上,我需要根据我是否在英文或法文翻译环境中进行测试,将变量设置为不同的值。这些TC脚本中的所有菜单都可以通过它们的名字进行访问,法文中它们不一样。但是,我可以通过它们在菜单中的位置访问它们,例如[4|2]创建与变量

我有常量列表并希望建立一个数组来MenuItem1设置为File|New[4|2]取决于tcDecimalSeparator <> '.'的值(设定为声明常数)。

这是否有意义?什么是最简单/最好的方法来做到这一点?

我知道我大概可以处理这件事了数据驱动测试,但我不想返工释放之前很多的脚本。

+0

你真的遇到问题创建一个数组,然后从它的值?或者你是问如何测试多语言程序?另外,请记住,如果您正在编写TestComplete脚本,那么您并不真正使用Delphi。你使用的东西*看起来像Delphi,但并不具备所有相同的功能,所以这个问题上的“delphi”标签可能是一个红色的鲱鱼。 –

+0

有效的点。我更熟悉VB并试图通过这种方式感受我的方式。我将删除Delphi标签 - 感谢您的输入! – GreenMtnGal

回答

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

我曾想过我自己......是谁写的剧本已经注释掉通过位置的菜单项,而原来的人转向使用菜单的文本,所以我认为这是不访问的首选方式!我的猜测是,当时的应用程序发生了很大的变化,她每次都记得更改这些值太难了。 我很欣赏信息! – GreenMtnGal