Hallo,
das Array sollte nach deinem Code aber so bleiben.
Aber ich würde das einfacher machen.
Delphi-Quellcode:
procedure GetDrives(const AItems: TStrings);
var
Drive: Char;
DriveType: Integer;
DriveMask: Integer;
Flag: Integer;
S1: String;
begin
AItems.Clear;
DriveMask := GetLogicalDrives; //Bitmaske holen
flag := 1; //Startflag setzen
for Drive := 'A' to 'Z' do //Jeden Buchstaben gegenprüfen
begin
if (flag and DriveMask) <> 0 then
begin
DriveType := GetDriveType(PChar(Format('%S:\',[Drive]) ) ) ;
if DriveType=DRIVE_CDROM then
begin
AItems.Add(Drive);
// falls das nicht klappt
S1 := Drive;
AItems.Add(S1);
end;
end;
flag := flag shl 1; //Ein Bit weiter nach links gehen ( = flag * 2)
end;
end;
Code ist nicht getestet.
Im Ergebnis sind die Buchstaben aller CD-/ DVD-Laufwerke in der StringList.
Heiko