2011-09-21 109 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