Карта сайта 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, которая использует алгоритм сравнения байтовых потоков для определения равенства или неравенства иконок.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 19:55:53/0.0035140514373779/0