Wyświetlenie tylko CD-ROM

0

Miał bym prośbe wielką o skorygowanie poniższego kodu tak aby wyświetlał tylko CD-ROMy znalezione w systemie...

procedure TForm1.FormCreate(Sender: TObject);
var

i : Integer; // zmienna potrzebna do wykonania petli
DriveType : Integer; // informacja o typie dysku
ListItem: TListItem;
Bufor:array[0..MAX_PATH] of Char; // zawiera etykiete dysku
MaxCompLength, FileSystemFlags : DWORD;

begin
{wykonaj petle analizujac kazda litere dysku}
for I := Ord('A') to Ord('Z') do

begin

DriveType := GetDriveType(PChar(Chr(i) + ':')); // pobierz typ dysku

{jezeli typ dysku to 0 ( nie mozna okreslic ) lub 1 (nie istnieje taki dysk) to pomin w opisie}
if not (DriveType = 0) and not (DriveType = 1) then

begin

{uzyskaj informacje dotyczace etykiety dysku}
GetVolumeInformation(PChar(Chr(i) + ':'), Bufor, SizeOf(Bufor),
nil, MaxCompLength, FileSystemFlags, nil, 0);

ListItem := ListView1.Items.Add; // dodaj pozycje
ListItem.Caption := Chr(i) + ':' + ' ' + Bufor; // ustaw tekst
buf:= Chr(i) + ':' ;

{Tutaj w zaleznosci od rodzaju dysku do komponentu ListView do okreslnej
pozycji zostaje przypisana okreslona ikonka symoblizujaca dysk.}
if (DriveType = DRIVE_CDROM) then ListItem.ImageIndex := 0;

end;
end;
end;

Za pomoc z góry dziekuje.

0

ja swego czasu (jeszcze w Pascalu) wykrywałem cdki za pomocą prostej sztuczki.. otóż jeżeli DiskSize > 0 and DiskFreeSpace = 0 to zapewne był cd-rom.. ale to metoda nieelegancka. forumowicze na pewno coś wymyślą...

0

Włucząc się po sieci w poszukiwaniu odpowiedzi na moje głupie pytania wpadłem kiedyś na coś takiego:

function WykryjCD: string;
var
naped : char;
lista : string;
begin
lista:='';
for naped:='a' to 'z' do
if GetDriveType(PChar(naped+':'))=DRIVE_CDROM then lista:=lista+naped;
WykryjCD:=lista;
end;

mam nadzieję że się przyda

0

W zasadzie chodzi mi tylko o poprawienie mojego kodu ponieważ on działa ale wyśwetla wszytskie użadzenia.

0

qurcze... cosik mi na moim dephiku się ten kod sypie i nie mogę tego pomęczyć... Chodziło mi o to że w Twoim kodzie wykrywasz wszystkie dyski i do listViewa trafiają informacje o wszystkich dyskach... A gdybyś sprubował przy wykrywaniu założyć taki warunek jak w przykładzie "if GetDriveType(PChar(naped+':'))=DRIVE_CDROM then " naListViewa powinny trafić tylko CD-ROMy. Tak mi się przynajmniej wydaje. Chociaż mogę się mylić. :-(

1 użytkowników online, w tym zalogowanych: 0, gości: 1