841 / 736 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
1

Объект TDictionary. Что такое ключ и что такое значение?

27.12.2013, 08:44. Показов 34263. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Из прочитанного в гугле понял что это нечто наподобие какого-то словаря:
Коллекция пар ключ-значение. и что работать будет только на делфях старше 7 версии.

Вопрос такой: Что же такое ключ и что такое значение, что может быть передано в качестве параметров ключа и какое может быть получено значение?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2013, 08:44
Ответы с готовыми решениями:

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое IIS и что такое PWS? Почему одно без другого не работает?
вот уже второй день пытаюсь немного разобраться в АСП. накидал небольшую тестовую страничку. но с...

Что такое напряжение и что такое сила тока с позиции заряженных частиц
Объясните пожалуйста, что такое напряжение и что такое сила тока с позиции заряженных частиц....

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

7
105 / 104 / 29
Регистрация: 15.01.2011
Сообщений: 496
28.12.2013, 12:20 2
Для ключа, думаю, можно использовать аналогию из базы данных.
Ключ в базе данных - это поле (совокупность полей) значение которого не повторяется у разных записей, содержимое которого однозначно определяет запись в таблице и отличает ее от других.
Например, ключом может быть номер телефона, полем - Ф.И.О., значением "Иванов Иван Иванович". Полей у ключа может быть несколько, например, кроме Ф.И.О. может быть поле адрес, e-mail и т.д.
Пример работы с TDictionary можно глянуть здесь.
1
725 / 477 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
28.12.2013, 13:16 3
В Delphi есть такой компонент как TValueListEditor у которого два столбца Key и Value. Для этогог же можно использовать тип TStrings содержащий в каждой строке ключь и значение разделенные знаком "="
0
3551 / 2168 / 685
Регистрация: 29.05.2013
Сообщений: 9,269
28.12.2013, 13:31 4
Вот тут довольно подробно расписано как использовать TDictionary
1
841 / 736 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
28.12.2013, 23:59  [ТС] 5
Ага сложный довольно- таки объект.
Вот у меня есть пример на основе его, она подсчитает повторение всех символов из текста, при чем не одного символа а каждого символа! сколько бы их в тексте небыло.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
uses System.Generics.Collections;
 
//.............................
procedure TForm2.ПодсчетClick(Sender: TObject);
var
  i:Integer;
  ch: Char;
  //зададим словарю символ- цифра
  Dictionary : TDictionary<Char,Integer>;
begin
  Dictionary:= TDictionary<WideChar,Integer>.Create(Length(Memo2.Text));
  try
 
    for i:=Low(Memo2.Text) to High(Memo2.Text) do
    begin
     if Dictionary.ContainsKey(Memo2.Text[i])=true then
     begin
       Dictionary[Memo2.Text[i]]:=
           Dictionary[Memo2.Text[i]]+1;
     end
     else
       Dictionary.Add(Memo2.Text[i],1);
    end;
 
    for ch in Dictionary.Keys do
    begin
      Memo1.Lines.Add(ch+#9+IntToStr(Dictionary[ch]) );
    end;
 
  finally
    Dictionary.Free;
  end;
end;
Будет работать тока на делфях выше 7 версии.
А как например задать словарю считать целые слова из текста например слова "Форум"?
Миниатюры
Объект TDictionary. Что такое ключ и что такое значение?  
0
3551 / 2168 / 685
Регистрация: 29.05.2013
Сообщений: 9,269
29.12.2013, 02:11 6
Например прогнать текст через класс TStringList с включеной проверкой дублей и результат уже загнать в TDictionary. Но с другой стороны TStringList класс с теми-же возможностями, что и TDictionary. Возникает вопрос, а нафига?
0
841 / 736 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
29.12.2013, 03:04  [ТС] 7
Да это все правильно, если нам нужно найти какое-то одно слово или совпадение можно просто вольспозоваться обычными функциями Pos, Copy или регуляркой.

А вот в примере что я показал- идет подсчет каждого символа в тексте и потом вывод!
Тут наверное и регулярка даже несправилась бы, а с функцией Pos, мы бы вобще замучились весь алфавит ей передавать посимвольно.

Я вот что и хочу оценить его на что он способен, Просто узнать его реальные возможности, чтобы потом сказать- да без TDictionary здесь необойтись.

Я знаю чт он что-то может, но просто нету реального примера (помимо которого привел я) что он еще может...

Добавлено через 5 минут
Просто сюда бы еще раз, два, три примеров кинули и обьяснили бы в чем именно преимущество данного метода вместе с кодом и разобрались бы на месте.
0
105 / 104 / 29
Регистрация: 15.01.2011
Сообщений: 496
29.12.2013, 08:13 8
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
А вот в примере что я показал- идет подсчет каждого символа в тексте и потом вывод!
Тут наверное и регулярка даже несправилась бы, а с функцией Pos, мы бы вобще замучились весь алфавит ей передавать посимвольно.
Единственное место в коде, где применение TDictionary якобы оправданно, это
if Dictionary.ContainsKey(Memo2.Text[i])=true
В принципе, можно прекрасно обойтись без метода ContainsKey и самого TDictionary, а воспользоваться компонентом Memo, StringList , массивом или тем, что посоветовал Игорь:
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
В Delphi есть такой компонент как TValueListEditor у которого два столбца Key и Value. Для этогог же можно использовать тип TStrings содержащий в каждой строке ключь и значение разделенные знаком "="
Единственно, нужно самому реализовать поиск символа (ключа) в списке (массиве). Возможно, в TDictionary реализован алгоритм поиска ключа быстрее, чем сможете реализовать вы. Вот и все отличие.
1
29.12.2013, 08:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2013, 08:13
Помогаю со студенческими работами здесь

Что такое ключ?
Как на сайте http://help.ubuntu.ru/wiki/apache2 расшифровывается openssl req -new -x509 -days 30...

Что такое монитор и что такое мьютекс? Это же разные вещи?
Здравствуйте. В разных айти-статьях по-разному используют эти термины, причём часто их путают друг...

Что такое внешний ключ?
Понятно что они нужны для того что бы не дублировать данные. InnoDB поддерживает внешние ключи,...

Что такое ключ реестра?
здравствуйте! подскажите пожалуйсто что такое ключи реестра?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru