Du hast bei dem vorherigen wohl ein Create vergessen gehabt ?
Ich mache es so:
Delphi-Quellcode:
function GetIconFromFile(Filename: String; aIcon: TIcon;
IconIndex: Integer): Integer;
var NumberOfIcons: Integer;
begin
// Anzahl der Icons in einer Datei
NumberOfIcons := ExtractIcon(hInstance, PChar(Filename), UINT(-1));
// Ein Icon auslesen angg. im IconIndex
if (aIcon <> nil) and (NumberOfIcons > -1) then
aIcon.Handle := ExtractIcon(hInstance, PChar(Filename), IconIndex);
Result := NumberOfIcons;
end;
// Aufruf zB.:
procedure TForm1.Button1Click(Sender: TObject);
var Ico: TIcon;
begin
// Nummer der Icons einer Datei
ShowMessage ( IntToStr( GetIconFromFile(paramstr(0), nil, 0)) );
// Das erste Icon auslesen
Ico := TIcon.Create;
try
if GetIconFromFile(paramstr(0), Ico, 0) > 0 then
if Ico <> nil then Image1.Picture.Assign(Ico);
finally
Ico.Free;
end;
end;