Zitat von
Martin K:
Sauber freigeben kannst du mit:
FreeAndNil(SpeedButton1.Glyph);
Martin, diesen Code hast du nicht getestet, stimmts? Der Compiler meiner Delphi-Version wollte die Zeile jedenfalls nicht...
Zitat:
Allerdings gibt es hier eine
Exception, wenn dem Glyph noch kein Bitmap zugeordnet ist.
Warum sollte es in diesem Fall eine
Exception geben?
Noch eine Anmerkung zur Funktion
ExtractAssociatedIcon: diese erwartet im zweiten Parameter einen Zeiger auf einen Zeichenpuffer. Sie liefert in diesem Puffer den vollständigen Pfad- und Dateinamen der ausführbaren Datei zurück, in dem das Icon gefunden wurde. Die Übergabe eines dynamischen Strings oder gar einer String-Eigenschaft (Edit1.Text) wird somit früher oder später zu Abstürzen führen. Richtiger wäre es, einen Puffer geeigneter Größe bereitzustellen, diesen mit dem gewünschten Dateinamen zu füllen und schließlich den Puffer an die Funktion zu übergeben:
Delphi-Quellcode:
var
buf : array [0..max_path] of char;
begin
buf := 'yourfile.exe';
ExtractAssociatedIcon(hInstance, buf, IconIndex);
end;
Gruß Hawkeye