Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Сравнить две иконки

Delphi , Графика и Игры , ICO

Сравнить две иконки

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

function IconsAreEqual(const Icon1, Icon2: TIcon): Boolean;
 var
   ms1: TMemoryStream;
   ms2: TMemoryStream;
 begin
   Result := False;
   ms1    := TMemoryStream.Create;
   try
     Icon1.SaveToStream(ms1);
     ms2 := TMemoryStream.Create;
     try
       Icon2.SaveToStream(ms2);
       if ms1.Size = ms2.Size then
         // Compare the streams, Streams vergleichen: 
        Result := CompareMem(ms1.Memory, ms2.Memory, ms1.Size)
       finally
         ms2.Free
     end
   finally
     ms1.Free
   end
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   icon1: TIcon;
   icon2: TIcon;
 begin
   icon1 := TIcon.Create;
   icon2 := TIcon.Create;
   try
     icon1.LoadFromFile('c:\Icon1.ico');
     icon2.LoadFromFile('c:\Icon2.ico');
     if IconsAreEqual(icon1, icon2) then
       ShowMessage('Icon 1 and Icon 2 match')
     else
       ShowMessage('Icon 1 and Icon 2 don''t match');
   finally
     icon1.Free;
     icon2.Free;
   end;
 end;

Программирование на Delphi!

Функция IconsAreEqual сравнивает два объекта TIcon, Icon1 и Icon2, и возвращает булевое значение, указывающее, равны ли они.

  1. Создает два потока памяти (ms1 и ms2) с помощью метода Create.
  2. Сохраняет каждый иконку в соответствующий поток памяти с помощью метода SaveToStream.
  3. Если обе иконки имеют одинаковый размер, сравнивает содержимое двух потоков памяти с помощью функции CompareMem.
  4. Если сравнение успешно (т.е., блоки памяти идентичны), устанавливает значение Result в True, указывая, что иконки равны.

Процедура Button1Click вызывается при клике кнопки на форме. Она выполняет следующие действия:

  1. Создает два новых объекта TIcon, icon1 и icon2.
  2. Загружает каждую иконку из файла с помощью метода LoadFromFile.
  3. Вызывает функцию IconsAreEqual, чтобы сравнить две иконки.
  4. Если иконки равны, отображает сообщение об ошибке "Icon 1 and Icon 2 match". Иначе, отображает сообщение об ошибке "Icon 1 and Icon 2 don't match".
  5. Освобождает память, выделенную для обоих объектов иконок с помощью метода Free.

В целом, это простой но эффективный способ сравнить две иконки в Delphi.

Некоторые предложения:

  • Вам может потребоваться обработка потенциальных исключений, которые могут возникнуть при загрузке или сохранении иконок.
  • Если вы работаете с большими иконками, вам может потребоваться более эффективный метод сравнения, чем CompareMem, который имеет сложность O(n).
  • Если вам нужно выполнить дополнительные операции над иконками (например, масштабирование, поворот), вам может потребоваться создать отдельные функции для этих задач.

Статья описывает функцию сравнения двух иконок в Delphi, которая использует алгоритм сравнения байтовых потоков для определения равенства или неравенства иконок.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: ICO ::


реклама



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

Время компиляции файла: 2024-06-02 10:20:12
2024-07-13 05:55:14/0.0034959316253662/0