Moin,
jetzt sind es doch drei Stunden geworden, bis ich alle Units und das Projekt beisammen hatte. Dabei habe ich festgestellt, dass die Laufwerke von cdrip und cddb in derselben Reihenfolge aufgelistet werden. Die Beschreibung ist lediglich etwas anders.
Für cdrip sieht es so aus:
Delphi-Quellcode:
procedure lw_cdrip;
type
TCDROMName = array[0..255] of char;
var
i : Byte;
anz_CDRom : Byte;
text : String;
CDRomName : TCDROMName;
FParams : TCDROMParams;
TargetID,
AdapterID,
LunID : Byte;
begin
if CR_Init = CDEX_ERROR
then begin
ShowMessage('Fehler beim Initialisieren von CD Rip');
Exit;
end;
Anz_CDRom := CR_GetNumCDROM;
cmb_Drives_cdrip.Clear;
for i := 0 to anz_CDROM - 1
do begin
CR_SetActiveCDROM(i);
if CR_GetCDROMParameters(FParams)<> CDEX_ERROR
then begin
CDRomName1 := TCDROMName(FParams.lpszCDROMID);
TargetID := FParams.btTargetID;
AdapterID := FParams.btAdapterID;
LunID := FParams.btLunID;
Text := IntToStr(TargetID) + ':'
+ IntToStr(AdapterID) + ':'
+ IntToStr(LunID) + ' - '
+ CDRomName;
cmb_Drives_cdrip.Items.Add(Text);
end;
end;
CR_SetActiveCDROM(0);
cmb_Drives_cdrip.ItemIndex := CR_GetActiveCDROM;
end;
Für CDDB:
Delphi-Quellcode:
procedure lw_cddb;
var
i : Byte;
anz_CDRom : Byte;
text : String;
CDRomName : ShortString;
TargetID,
AdapterID,
LunID : Byte;
begin
CDDB := TCDDB.Create(self);
anz_CDRom := CDDB.CDRoms.CdRomCount;
for i := 0 to anz_CDRom - 1 do
begin
CDRomName := CDDB.CDRoms.CdRom[i].Description;
TargetID := CDDB.CDRoms.CdRom[i].Target;
AdapterID := CDDB.CDRoms.CdRom[i].HaID;
LunID := CDDB.CDRoms.CdRom[i].Lun;
Text := IntToStr(TargetID) + ':'
+ IntToStr(AdapterID) + ':'
+ IntToStr(LunID) + ' - '
+ CDRomName;
cmb_Drives_cddb.Items.Add(Text);
end;
cmb_Drives_cddb.ItemIndex := CDDB.CdRoms.ActiveCdRom;
end;
In den proceduren werden verschiedene ComboBoxen verwendet. Bei Auswahl des selben Laufwerkes sind die Werte für den ItemIndex identisch. Jedoch muss die Auswahl an beide Komponenten weitergeben werden.
Gesetzt werden sie mit:
Delphi-Quellcode:
CR_SetActiveCDROM(cmb_Drives.ItemIndex); // CD Rip
CDDB.ChangeActiveDrive(cmb_Drives.ItemIndex); // CDDB
Und ausgelesen mit:
Delphi-Quellcode:
cmb_Drives.ItemIndex := CR_GetActiveCDROM; // CD Rip
cmb_Drives.ItemIndex := CDDB.CdRoms.ActiveCdRom; // CDDB
Ach so, CDDB ist unter Var für die
unit mit dem Typ TCCDB vereinbart. Die Units cdrip_dll und cddb stehen in den uses.
Wenn jetzt die Reihenfolge bei Dir nicht übereinstimmt, hast Du Fehler in Deinem Sourcen.