12. september 2000 - 15:52Der er
6 kommentarer og 1 løsning
Tjekke for CD i drev.
Jeg har brug for at kunne tjekke, om der er indsat en cd i drevet. Jeg gør det i øjeblikket med * if DirectoryExists(DrevBogstav for CD) then, og det virker også fint, bortset fra at Windows beder mig indsætte en cd. Er der en metode specielt for cdrom drevet eller er det muligt at hindre fejlmeddelelsen fra windows i at dukke op?
Nedenstående virker med floppy, men jeg ved ikke om den også virker med CD-ROM. Parametret du skal overføre er drev bogstavet, så hvis du eksempelvis vil se om F-drevet \"er klar så skriver du: \"if IsDriveReady(\'F\') then ....\"
<SNIP> Function IsDriveReady(cDrive : Char) : Boolean; var uiDrvNum : byte; wEMode : Word; begin Result := False; uiDrvNum := ord(cDrive); if uiDrvNum >= ord(\'a\') then dec(uiDrvNum,$20); wEMode := SetErrorMode(SEM_FAILCRITICALERRORS); try if DiskSize(uiDrvNum-$40) <> -1 then Result := True else messagebeep(0); finally SetErrorMode(wEMode); end; end; </SNIP>
constructor TDiscInfo.Create(const drive: char); var Tmp : DWORD; begin FDrive[0] := drive; FDrive[1] := #58; FDrive[2] := #92;
FFreeSpaceAvailable := 0; FTotalSpace := 0;
if GetVolumeInformation(FDrive, nil, 0, nil, Tmp, Tmp, nil, 0) then GetDiskFreeSpaceEx(FDrive, FFreeSpaceAvailable, FTotalSpace, @FTotalFree);
FSerialId := GetDiskVolSerialID(drive); end;
function TDiscInfo.GerDriveSize: String; begin Result := IntToStr(DiskSize(0)); end;
Function TDiscInfo.GetDriveType : String; var DriveType: TDriveType; begin DriveType := TDriveType(Windows.GetDriveType(FDrive)); case DriveType of dtUnknown : Result := \'Drive type cannot be determined.\'; dtNoDrive : Result := \'Root directory does not exist\'; dtFloppy : Result := \'Floppy drive.\'; dtFixed : Result := \'Hard disk drive\'; dtNetwork : Result := \'Network drive\'; dtCDROM : Result := \'CD-ROM drive\'; dtRAM : Result := \'RAM drive\'; end; end;
end.
Så kan du bare kalde den alla det her :
with TDiscInfo.Create(#68) do try ListBox1.Items.Add(\'Drive type : \' + DriveType); ListBox1.Items.Add(\'Free Space : \' + ConvertBytes(FreeSpaceAvailable)); ListBox1.Items.Add(\'Total Space : \' + ConvertBytes(TotalSpace)); ListBox1.Items.Add(\'Disk Serial ID : \' + DiskVolSerialID); finally free; end;
Tak til jer begge to for det MEGET hurtige svar. Pellelil\'s lille kodestump virker. Det var lige præcis det jeg skulle bruge. Jeg troede egentlig at jeg kunne give jeg begge point, fordi borrisholt har gjort virkelig meget ud af sit svar. Han tilbyder endda en færdig kode over email :-). Men det blev så til Pellelil. Han VAR også meget hurtig. Endnu engang tak for hjælpen, begge to! Jacob
Jacob >> Derfor kan du godt få koden alligevel ...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.