El primer código podría resumirse a:
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
var
Icono: TIcon;
begin
Icono := TIcon.Create;
Icono.Handle := ExtractIcon(hInstance,'calc.exe',0);
Icono.SaveToFile('C:\icono.ico');
Icono.Free;
end;
El probleba radica en el mismo delphi pues las conversiones en los iconos las hace a 16 colores. Es posible que las últimas versiones trabajen con mas de 16 colores.
Se puede solucionar. Revisa despacio este hilo:
Crear resource icon por código. En especial esta
cuestión y esta
solución.
Saludos.