лазерный диск имеет свой идентификатор. Если сохранить, какому диску соответствует какой идентификатор, то можно реализовать определение диска.

 

В этой программе при нажатии на кнопку происходит проверка, есть ли название этого диска в файле. Если есть, то в заголовок окна выводится его название, если нет, то введенное пользователем название диска сохраняется в файл.

Code:

uses MMSystem, IniFiles;

 

function GetCDid: string;

var

InfoParams: TMCI_Info_Parms;

s: array [0..63] of char;

OpenParams: TMCI_Open_Parms;

CloseParams: TMCI_Generic_Parms;

begin

result := '';

FillChar(InfoParams, sizeof(InfoParams), #0);

InfoParams.lpstrReturn := @s[0];

InfoParams.dwRetSize := 10;

OpenParams.dwCallback := 0;

OpenParams.lpstrDeviceType := 'CDAudio';

if mciSendCommand(0, mci_Open, mci_Open_Type,

 

   Longint(addr(OpenParams))) <> 0 then Exit;

if mciSendCommand(OpenParams.wDeviceID, MCI_INFO,

   MCI_INFO_MEDIA_IDENTITY, longint(@InfoParams)) = 0

then result := s;

mciSendCommand(OpenParams.wDeviceID, mci_Close, 0,

   Longint(addr(CloseParams)));

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

id: string;

ini: TIniFile;

name: string;

begin

id := GetCDid;

if id = '' then begin

 

   Form1.Caption := 'No disk';

   Exit;

end;

ini := TIniFile.Create(ExtractFilePath(Application.ExeName) +

   'cd.ini');

name := ini.ReadString('CD', id, '');

if name = '' then begin

   name := 'CD name';

   if not InputQuery('CD name', 'Enter CD name:', name)

     then Exit;

   ini.WriteString('CD', id, name);

end;

Form1.Caption := name;

ini.Destroy;

end;

 

Автор советов: Даниил Карапетян

 

Автор справки: Алексей Денисов

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить