Как я могу быстрее искать пары имя / значение в Delphi TStringList?

Я реализовал языковой перевод в приложении, поместив все строки во время выполнения в TStringList с помощью:

procedure PopulateStringList;
begin  
  EnglishStringList.Append('CAN_T_FIND_FILE=It is not possible to find the file');
  EnglishStringList.Append('DUMMY=Just a dummy record');
  // total of 2000 record appended in the same way
  EnglishStringList.Sorted := True; // Updated comment: this is USELESS!
end;

Тогда я получаю перевод, используя:

function GetTranslation(ResStr:String):String;
var
  iIndex : Integer;
begin
  iIndex := -1;
  iIndex :=  EnglishStringList.IndexOfName(ResStr);
  if iIndex >= 0 then
  Result :=  EnglishStringList.ValueFromIndex[iIndex] else
  Result := ResStr + ' (Translation N/A)';
end;

В любом случае, при таком подходе для поиска записи требуется около 30 микросекунд. Есть ли лучший способ достичь того же результата?

ОБНОВЛЕНИЕ: Для дальнейшего использования я напишу здесь новую реализацию, которая использует TDictionary как предложено (работает с Delphi 2009 и новее):

procedure PopulateStringList;
begin  
  EnglishDictionary := TDictionary<String, String>.Create;
  EnglishDictionary.Add('CAN_T_FIND_FILE','It is not possible to find the file');
  EnglishDictionary.Add('DUMMY','Just a dummy record');
  // total of 2000 record appended in the same way
end;


function GetTranslation(ResStr:String):String;
var
  ValueFound: Boolean;
begin
  ValueFound:=  EnglishDictionary.TryGetValue(ResStr, Result);
  if not ValueFound then Result := Result + '(Trans N/A)';
end;

Новая функция GetTranslation работает в 1000 раз быстрее (на моих 2000 записей записей), чем первая версия.

Ответы на вопрос(5)

Ваш ответ на вопрос