AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TIcon freigeben mit Free oder DestroyIcon
Thema durchsuchen
Ansicht
Themen-Optionen

TIcon freigeben mit Free oder DestroyIcon

Ein Thema von RaSoWa1 · begonnen am 17. Sep 2008 · letzter Beitrag vom 17. Sep 2008
Antwort Antwort
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#1

TIcon freigeben mit Free oder DestroyIcon

  Alt 17. Sep 2008, 18:48
Hallo,

ich muß in meinem Projekt das Icon von diversen EXE-Dateien auslesen.
Dafür habe ich mit Google diesen Beispielcode gefunden.
Da dieses Originalbeispiel bei mir leider nicht läuft, vermutlich weil das Icon mit DestroyIcon zu zeitig freigegeben wird, habe ich zum Testen den Code auf meine Bedürfnisse umgeschrieben.
Delphi-Quellcode:
function LoadIconFromExeFile(fn: String; icon: TIcon): Boolean;
var FileInfo : SHFileInfo;
begin
  result := SHGetFileInfo(PChar(fn), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON) <> 0;
  if result
  then icon.Handle := FileInfo.hIcon;
end;

procedure TForm1.Button3Click(Sender: TObject);
var idx : Integer;
     icon : TIcon;
begin
  with OpenDialog1 do
    if Execute
    then begin
      icon := TIcon.Create;
      try
        if LoadIconFromExeFile(Filename, icon)
        then begin
          idx := ImageList1.AddIcon(icon);
          if idx > -1
          then ImageList1.GetIcon(idx, Image1.Picture.Icon); // für Testzwecke Icon anzeigen
          end;
      finally
        icon.Free;
// oder
// DestroyIcon(icon.Handle); ????
        end;
      end;
end;
Der Code funktioniert auch wie gewünscht. Nur bin ich mir nicht im Klaren, wie das Icon wieder freizugeben ist.
In der Hilfe steht:
Zitat:
It is only necessary to call DestroyIcon for icons created with the CreateIconIndirect function.
Aber: Icon wurde ja mit Create erzeugt.

Wie mache ich es richtig?

Gruß Klaus.
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: TIcon freigeben mit Free oder DestroyIcon

  Alt 17. Sep 2008, 18:58
Zitat von msdn:
If SHGetFileInfo returns an icon handle in the hIcon member of the SHFILEINFO structure pointed to by psfi, you are responsible for freeing it with DestroyIcon when you no longer need it.
( msdn)
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz