![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Опять про CD-Rom
Фагот © (2003-06-10 15:08:00)procedure TForm1.FormCreate(Sender: TObject);
var cycle: integer;
sy: Pchar;
begin
for cycle:=0 to 25 do
begin
sy:=PChar(ord("a")+cycle);
( sy)procedure TForm1.FormCreate(Sender: TObject);
var cycle: integer;
sy: Pchar;
begin
for cycle:=0 to 25 do
begin
sy:=PChar(ord("a")+cycle);
if GetDriveType(sy)=DRIVE_CDROM then ShowMessage(sy);
end;
end;
Выдаётся "Access violation..."
Что не так?
@LE (2003-06-12 09:00:00) [1]
function GetCDChar(var ch : Char) : Boolean;
var
s : array[0..255] of char;
c : PChar;
begin
Result := false;
GetLogicalDriveStrings(256, @s);
c := @s;
repeat
if GetDriveType(c) = DRIVE_CDROM then begin
Result := true;
ch := c^;
Break;
end;
while c^ <> #0 do c := c + 1;
c := c + 1;
until c^=#0;{}
end;
Леонид Федьков (2003-06-11 11:11:00) [2]
Проверено. Работает всегда. (Делал по "козе" для определения типа драйва. Где взял "козу" - не помню.
procedure TDataModule1.Get_drive_cd;
{Определение логического имени CD-ROM }
var
PDrivers :Pchar;
Bufer : array [1..500] of char;
Stop : Boolean;
i : integer;
Z : String;
begin
PDrivers:=@Bufer;
GetLogicalDriveStrings(500,PDrivers);
Z:=""; Stop:=False;
for i :=1 to 500 do
begin
if Bufer[i]<>#0 then
begin
Z:=Z+Bufer[i];
Stop:=False;
end
else begin
if Stop then break
else begin
if GetDriveType(Pchar(Z))=DRIVE_CDROM then
begin
Drive_CD := Z;
end;
Stop:=true; Z:="";end;
end;
end;
end;
Илайдж (2003-06-11 08:21:00) [3]http://www.delphimaster.ru/cgi-bin/forum.pl?look=1&id=1055223659&n=2
Тестировано: Win2K, Win98.
stranger___ (2003-06-11 01:56:00) [4]
Михайлов Антон © (11.06.03 01:52)
офигеть не встать
Михайлов Антон (2003-06-11 01:52:00) [5]
Ну мой код медь рабочий...
У мя на всех осях работает....
Procedure GetDriveType;
var
Disk: Char;
begin
for Disk := "A" to "Z" do
case GetDriveType(PChar(Disk+":\")) of
2:Memo1.lines.add("[Floppy]"+Disk+":\");
3:Memo1.lines.add("[HDD Partition]"+Disk+":\");
5:Memo1.lines.add("[CD-ROM]"+Disk+":\");
end;
end;
VMcL (2003-06-10 17:10:00) [6]
>Фагот © (10.06.03 15:08)
sy:=PChar(ord("a")+cycle);
Это неправильно.
var
Drv: packed array [0 .. 3] of Char;
Cycle: Byte;
begin
Drv[1] := ":";
Drv[2] := "\";
Drv[3] := #0;
for Cycle := 0 to 25 do
begin
Drv[0] := Chr(Cycle);
if GetDriveType(Drv) = DRIVE_CDROM then //...
end;
end;
Мое имя (клоны все равно суксь) (2003-06-10 15:16:00) [7]
в 17-й
Фагот (2003-06-10 15:16:00) [8]
Двухтоннка Про. Ругается на ntdll.dll
Yanis (2003-06-10 15:15:00) [9]
Может из-за винды, у тебя всего скорее NT стоит?