Delphi Словарь и данные заказа

Мой код:

procedure TfrmSettings.btnFillDictClick(Sender: TObject);
var
  Dict: TDictionary<string, string>;
  Item: TPair<string, string>;
begin
  Dict := TDictionary<string, string>.Create();

  Dict.Add('Key1', 'Text1');
  Dict.Add('Key2', 'Text2');
  Dict.Add('Key3', 'Text3');
  Dict.Add('Key4', 'Text4');

  for Item in Dict do
  begin
    ShowMessage(Item.Key + ' ' + Item.Value);
  end;    
end;

Почему почти каждый раз я получаю другое значение в Showmessage?
Почему значения не хранятся в том порядке, в котором они были добавлены?

Я нуб в Delphi и не знаю, как работает словарь. И я не нашел никакой информации об этом в Google. Не могли бы вы объяснить, почему это так?
Есть ли способ использовать словарь без использования TList <> для сортировки данных?

Спасибо

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

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