Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как загрузить иконку CD-ROM

Delphi , Файловая система , CD-ROM



Автор: http://www.swissdelphicenter.ch

function GetCDIcon(Drive: Char): TIcon;
var
  ico: TIcon;
  ini: TIniFile;
  s, p: string;
  i, j: Integer;
begin
  //Abbrechen wenn "AutoRun.Inf" nicht existiert.
  //Abort if "AutoRun.inf" doesn't exists.
  if FileExists(Drive + ':\autorun.inf') = False then
    Exit;

  //"AutoRun.inf" offnen
  //Opens the "AutoRun.inf"
  ini := TIniFile.Create(Drive + ':\autorun.inf');
  ico := TIcon.Create;

  try
    //Dateinamen lesen
    //Read the filename
    s := ini.ReadString('Autorun', 'ICON', '');

    //Abbrechen, wenn kein Icon festgelegt wurde
    //Abort if there is no icon specified
    if s = '' then
      Exit;

    //Icon von Datei laden
    //load the icon from a file
    if FileExists(s) then
      ico.LoadFromFile(s);
    if FileExists(Drive + ':\' + s) then
      ico.LoadFromFile(Drive + ':\' + s);

    //Icon aus einer Resource laden
    //Load the icon from a Win32 resource
    if (FileExists(s) = False) and (FileExists(Drive + ':\' + s) = False) then
    begin
      for j := (Pos(',', s) + 1) to Length(s) do
      begin
        p := p + s[j];
      end;
      i := StrToInt(p);
      for j := Length(s) downto (Pos(',', s)) do
        Delete(s, j, Length(s));

      if FileExists(s) = False then
        s := Drive + ':\' + s;

      ico.Handle := ExtractIcon(hinstance, PChar(s), i);
    end;

    Result := ico;
  finally
    ini.Free;
  end;
end;

Функция Delphi, именуемая GetCDIcon, загружает иконку из CD-ROM драйва и возвращает ее как объект TIcon.

Сигнатура функции

function GetCDIcon(Drive: Char): TIcon;

Функция принимает одиночный параметр Drive типа Char, который представляет собой букву драйва (например, 'A', 'C' и т.д.).

Инициализация

var ico, ini: TIcon; s, p: string; i, j: Integer;

Объявляются следующие переменные:

  • ico: объект TIcon для хранения загруженной иконки
  • ini: объект TIniFile для чтения конфигурации из файла
  • s, p: строки для хранения путей файлов и других данных
  • i, j: целые числа для счетчиков циклов

Основной логик

if not FileExists(Format('A:\AutoRun.inf', [Drive])) then
  Exit;

ini := TIniFile.Create(Format('A:\AutoRun.inf', [Drive]));
ico := TIcon.Create;

s := ini.ReadString('Autorun', 'ICON', '');
if s = '' then
  Exit;

p := Format('%s\%s.ico', [Drive], s);
if FileExists(p) then
  ico.LoadFromFile(p)
else
  i := StrToInt(s);
  j := ExtractIcon(0, p, i);
  if j <> 0 then
    ico.Handle := j;

Функция проверяет, существует ли файл "AutoRun.inf" на указанном драйве. Если нет, она выходит.

Если файл существует, функция открывает файл "AutoRun.inf" с помощью объекта TIniFile и создает объект TIcon.

Затем функция читает значение "ICON" из раздела "Autorun" INI-файла. Если не указана иконка, она выходит.

Далее функция пытается загрузить иконку из файла, указанного в значении "ICON". Если файл существует на текущем драйве или указанном драйве (например, "A:\icon.ico"), она загружает иконку с помощью ico.LoadFromFile.

Если файл не существует, функция пытается загрузить иконку из ресурса Win32. Она извлекает идентификатор ресурса из значения "ICON" и использует ExtractIcon для загрузки иконки.

Возвращаемое значение

Result := ico;

Функция возвращает загруженную иконку как объект TIcon.

Обработка ошибок

ini.Free;

В случае ошибки функция освобождает INI-файл с помощью ini.Free.

В статье описывается функция GetCDIcon для загрузки иконки CD-ROM из файла AutoRun.inf или ресурса Windows.


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

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




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


:: Главная :: CD-ROM ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-11 07:00:40/0.006270170211792/0