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

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

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

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

Вопрос такой: Что же такое ключ и что такое значение, что может быть передано в качестве параметров ключа и какое может быть получено значение?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.12.2013, 08:44
Ответы с готовыми решениями:

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

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

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

7
105 / 104 / 29
Регистрация: 15.01.2011
Сообщений: 501
28.12.2013, 12:20
Для ключа, думаю, можно использовать аналогию из базы данных.
Ключ в базе данных - это поле (совокупность полей) значение которого не повторяется у разных записей, содержимое которого однозначно определяет запись в таблице и отличает ее от других.
Например, ключом может быть номер телефона, полем - Ф.И.О., значением "Иванов Иван Иванович". Полей у ключа может быть несколько, например, кроме Ф.И.О. может быть поле адрес, e-mail и т.д.
Пример работы с TDictionary можно глянуть здесь.
1
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
28.12.2013, 13:16
В Delphi есть такой компонент как TValueListEditor у которого два столбца Key и Value. Для этогог же можно использовать тип TStrings содержащий в каждой строке ключь и значение разделенные знаком "="
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
28.12.2013, 13:31
Вот тут довольно подробно расписано как использовать TDictionary
1
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
28.12.2013, 23:59  [ТС]
Ага сложный довольно- таки объект.
Вот у меня есть пример на основе его, она подсчитает повторение всех символов из текста, при чем не одного символа а каждого символа! сколько бы их в тексте небыло.
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
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
29.12.2013, 02:11
Например прогнать текст через класс TStringList с включеной проверкой дублей и результат уже загнать в TDictionary. Но с другой стороны TStringList класс с теми-же возможностями, что и TDictionary. Возникает вопрос, а нафига?
0
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
29.12.2013, 03:04  [ТС]
Да это все правильно, если нам нужно найти какое-то одно слово или совпадение можно просто вольспозоваться обычными функциями Pos, Copy или регуляркой.

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

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

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

Добавлено через 5 минут
Просто сюда бы еще раз, два, три примеров кинули и обьяснили бы в чем именно преимущество данного метода вместе с кодом и разобрались бы на месте.
0
105 / 104 / 29
Регистрация: 15.01.2011
Сообщений: 501
29.12.2013, 08:13
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
А вот в примере что я показал- идет подсчет каждого символа в тексте и потом вывод!
Тут наверное и регулярка даже несправилась бы, а с функцией Pos, мы бы вобще замучились весь алфавит ей передавать посимвольно.
Единственное место в коде, где применение TDictionary якобы оправданно, это
if Dictionary.ContainsKey(Memo2.Text[i])=true
В принципе, можно прекрасно обойтись без метода ContainsKey и самого TDictionary, а воспользоваться компонентом Memo, StringList , массивом или тем, что посоветовал Игорь:
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
В Delphi есть такой компонент как TValueListEditor у которого два столбца Key и Value. Для этогог же можно использовать тип TStrings содержащий в каждой строке ключь и значение разделенные знаком "="
Единственно, нужно самому реализовать поиск символа (ключа) в списке (массиве). Возможно, в TDictionary реализован алгоритм поиска ключа быстрее, чем сможете реализовать вы. Вот и все отличие.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.12.2013, 08:13
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Тестирование Pull Request в Kubernetes с vCluster
Mr. Docker 19.07.2025
Часто сталкиваюсь с серьезной дилемой при настройке тестовых окружений для проверки Pull Request в Kubernetes. С одной стороны, каждый PR требует изолированной среды — только так можно гарантировать,. . .
Мой 7 минутный ролик с крамольным предложением про шахматы, предлагаю заценить
_Ivana 18.07.2025
p2UhJNMGY94
Десять Middleware Node.js для эффективного кодинга
Reangularity 18.07.2025
Когда я только начинал работать с Node. js, количество пакетов в npm меня буквально парализовало. Сегодня их больше 1,3 миллиона — попробуй разберись, что стоит твоего внимания, а что нет. Я потратил. . .
Context и глубины Android
mobDevWorks 18.07.2025
В Android разработки Context напоминает воздух - он везде, жизненно необходим, но мало кто может детально объяснить его природу. Мы привыкли получать его как параметр, передавать дальше и. . .
Результаты исследования от команды MCM (июль 2025 г.)
Programma_Boinc 18.07.2025
Результаты исследования от команды MCM (июль 2025 г. ) Как сообщалось в наших предыдущих публикациях, мы изучаем гены, которые имеют наибольший рейтинг и ассоциируются с различными видами рака, в. . .
ИИ-чатбот на React с OpenAI и LangChain.js
Reangularity 17.07.2025
React давно стал для меня золотым стандартом фронтенд-разработки. Его компонентная структура, виртуальный DOM и однонаправленный поток данных идеально подходят для создания динамичных интерфейсов. . .
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru