PDA

Prikaži potpunu verziju : Dobivanje oznake CD-ROM-a(ili kak se to zove)


mirk
14.2.2007, 21:44
Me zanima kako se u Win32 API dobije oznaka CD-ROM-a(neznam ni ja kak se to tačno zove). Naprimjer od Hard Diska je C: od floppy-a je A: itd. Mene sad zanima kako to dobiti za CD-ROM.

Mnogo Hvala.

voodoo_
14.2.2007, 22:06
Prvo treba da izlistaš sve drajvove koji postoje na sistemu pomoću funkcije GetLogicalDriveStrings, a onda ispitaš tip drajva za svako vraćeno slovo pomoću funkcije GetDriveType. Oni za koje se vrati DRIVE_CDROM su CD/DVD čitači/rezači. GetLogicalDriveStrings vraća string sa spiskom svih slova drajvova (sa dvotačkama), razdvojenih NULL karakterom. Evo ga program koji ispisuje sva slova CD drajvova.

char szDrives[MAX_PATH];
GetLogicalDriveStrings(sizeof(szDrives), szDrives);

for (int i=0; i<MAX_PATH; i += 3) {
char drive[5];
drive[0] = szDrives[i];
drive[1] = szDrives[i+1];
strcat(drive, "\\");
if (GetDriveType(drive) == DRIVE_CDROM) printf("%s\n", drive);
}


Možda ima grešaka, nemam pri ruci C kompajler, ali u svakom slučaju treba da iščupaš dva znaka iz szDrive stringa, dodaš backslash na to, propustiš kroz GetDriveType, jedan znak preskočiš, i tako do kraja stringa.

mirk
15.2.2007, 15:32
Neradi meni samo ispiše A:.

voodoo_
15.2.2007, 23:02
Izgleda da nisam lepo vadio stringove :\

Evo ti Delphi varijanta:

uses Windows;
var
szDrives: array[0..255] of char;
i: Integer;
begin
FillChar(szDrives, sizeof(szDrives), 0);
GetLogicalDriveStrings(sizeof(szDrives), szDrives);

i := 0;
while i < 255 do
begin
if GetDriveType(pchar(UpperCase(szDrives[i] + szDrives[i+1] + '\'))) = DRIVE_CDROM then WriteLn(UpperCase(szDrives[i] + szDrives[i+1] + '\'));
Inc(i, 3);
if (szDrives[i] = #0) and (szDrives[i+1] = #0) then Break;
Inc(i);
end;
end.

next
16.2.2007, 1:11
Ja sam tek poceo sa ucenjem Delphi-ja,tako da bi stvarno bilo glupo da te isparavlja...Ali mislim da nisi definisao "uppper case", i kod mene ovaj kod ne radi...
Anyway,jsmo jedno pitanje:Gde mogu da nadjem neke vezbe ili tutorijale za Delphi 7???Poceo sam da ucim u skoli Dephi,dopalo mi se programiranje,a posto mi dobro idu i mat. i fiz. verovatno cu na ETF,pa bih da pocnem malo da ucim programiranje,eto za pocetak Delphi...

voodoo_
16.2.2007, 1:21
A da, treba gore u uses da se dopiše SysUtils (dakle uses Windows, SysUtils; ) i da se kompajlira kao konzolni program (New Project > Console Application).

Od Delphi tutoriala slabo šta ima (u smislu knjiga "Thinking in Delphi" i slično), sve ti se svodi na vežbu i praksu. Postoji doduše Delphi 4 od Lasla Krausa da se nađe po knjižarama.

U stvari evo ti ceo program koji izlistava drajvove, tip i slobodan/ukupan prostora. Pisao sam ga u Delphiju 7, trebalo bi da se otvori i u novijim verzijama. EXE nisam kačio zbog veličine.

next
16.2.2007, 1:36
Ma nije meni trebao tja program,nego sam video da si ga pisao u Delphi-ju pa rekoh da vidim kako to ide...Narucio sam ja knjigu preko mikroknjige Delphi 7 od pomenutog Lasla Krausa,skoro mi je stigla ali nisam stigao da krenem sa radom jer imam nekih problema u skoli(filozofija:mad: :n-cc2: )...pa sam mislio da postoje neke vezbice ili mini tutorijali kojim bi mogao da se zabavim dok ne otkacim filozofiju i pocnem sa ucenjem iz ove knjige...
Hvala,anyway...
edit:Super si odradio ovaj program!!