Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как реализовать ассоциативные массивы в Pascal без использования внешних библиотек

Delphi , Синтаксис , Массивы

Как реализовать ассоциативные массивы в Pascal

Ассоциативные массивы — это структура данных, где элементы обращаются не по индексу, а по ключу. В языке Pascal и его среде разработки Delphi такой тип данных отсутствует в стандартной библиотеке, но его можно реализовать с помощью классов, предоставляемых стандартными библиотеками, такими как TFPGMap из модуля fgl. В этом примере мы рассмотрим, как использовать TFPGMap для создания ассоциативного массива со строками в качестве ключей и списками строк в качестве значений.

Шаг 1: Подключение необходимых модулей

Для начала необходимо подключить модуль fgl в ваш проект. Откройте файл единицы вашего проекта и добавьте в раздел uses следующую строку:

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, fgl;

Шаг 2: Реализация программы для чтения файла

Допустим, у вас есть файл с данными о странах и их языках в следующем формате:

Bulgaria = Bulgarian
Croatia = Croatian
Austria = Croatian German Hungarian Slovenian
# и так далее

Создайте кнопку Button1 и TMemo с именами Memo1 на вашей форме. В обработчик нажатия кнопки Button1Click добавьте следующий код:

type
  TMap = specialize TFPGMap<string, TStringList>;

procedure TAssocForm.Button1Click(Sender: TObject);
var
  mydata: TMap;
  myfile: Text;
  line: string;
  country, language: string;
  mypos, left, right: Integer;
  SL: TStringList;
  I: Integer;
begin
  // Инициализация ассоциативного массива
  mydata := TMap.Create;

  // Открытие файла 'myfile.txt' для чтения
  Assign(myfile, 'путь\к\файлу\myfile.txt'); // Укажите путь к вашему файлу
  Reset(myfile);

  // Чтение строк из файла
  while not Eof(myfile) do
  begin
    Readln(myfile, line);
    mypos := Pos('=', line);

    // Разделение строки на страну и язык
    country := Copy(line, 1, mypos - 1);
    language := Copy(line, mypos + 2, Length(line) - mypos);

    // Удаление пробелов в начале и конце строки
    country := Trim(country);
    language := Trim(language);

    // Если ключ отсутствует, создаем новый список строк
    if mydata.IndexOf(country) < 0 then
      mydata.Add(country, TStringList.Create);

    // Добавление языка в список страны
    mydata[country].Add(language);
  end;
  Close(myfile);

  // Заполнение Memo данными из ассоциативного массива
  Memo1.Lines.Clear;
  for I := 0 to mydata.Count - 1 do
  begin
    country := mydata.Keys[I];
    SL := mydata[country];
    line := country + ' -> ';
    for language in SL do
      line := line + language + ' ';
    Memo1.Lines.Add(Trim(line));
  end;

  // Освобождение памяти
  for I := 0 to mydata.Count - 1 do
    mydata[mydata.Keys[I]].Free;
  mydata.Free;
end;

Шаг 3: Запуск программы

Запустите вашу программу и нажмите кнопку Button1, чтобы прочитать файл и отобразить результаты в TMemo.

Этот пример демонстрирует, как создать ассоциативный массив в Pascal с использованием класса TFPGMap, который позволяет использовать строки в качестве ключей и списки строк в качестве значений. Обратите внимание, что для работы с TFPGMap необходимо подключить модуль fgl, который может не идти в комплекте с базовыми версиями Delphi и может потребоваться установка дополнительных компонентов.

Создано по материалам из источника по ссылке.

Пример реализации ассоциативных массивов в языке программирования Pascal с использованием класса `TFPGMap` из модуля `fgl` для обработки данных из файла.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Массивы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-14 12:47:50/0.010495901107788/0