Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.04;
Скачать: CL | DM;

Вниз

2 вопроса   Найти похожие ветки 

 
Study   (2003-08-14 13:15) [0]

Мастера, посоветуйте.
1) Код определения типа носителя (если не CD, то не запускать):
Path:=appication.exename;
if getdrivetype("path[1]:\")<>Drive_CDROM then
begin
ShowMessage ("//////////");
Application.terminate;
end;
Переписал на CD - запускаю и выводит "//////////" Почему?
P.S. Корректно-ли проверять тип носителя в Create формы, если нет, то где лучше?
2) После закрытия проги должен выдвигаться CD-ROM, в который вставлен диск с прогой.
Код: mciSendString("Set cdaudio Door Open Wait",nil,0,handle);
Так вот, у меня два дисковода. Если диск вставлен в secondary, то после завершения проги выдвигается master (если в master, то он и выдвигается).
Как сделать, чтобы выдвигать тот, в котором диск с прогой?


 
Anatoly Podgoretsky ©   (2003-08-14 13:26) [1]

Такого корневого пути нет "path[1]:\"


 
dataMaster ©   (2003-08-14 13:29) [2]

Открыть-Закрыть CDROM с определенной буквой
function OpenCD(Drive : Char) : Boolean;
uses MMSystem;

Var
Err : MciError;
OpenParm: TMCI_Open_Parms;
Flags : DWord;
S : String;
DeviceID : Word;
begin
Result:=false;
S:=Drive+":";
Flags:=mci_Open_Type or mci_Open_Element;
With OpenParm do
begin
dwCallback := 0;
lpstrDeviceType := "CDAudio";
lpstrElementName := PChar(S);
end;
Err := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
IF Err<>0 Then exit;
DeviceID:=OpenParm.wDeviceID;
try
Err:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
IF Err=0 Then exit;
Result:=True;
finally
begin
mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
Result:=True;
end;
end;
end;

function CloseCD(Drive : Char) : Boolean;
Var
Err : MciError;
OpenParm: TMCI_Open_Parms;
Flags : DWord;
S : String;
DeviceID : Word;
begin
Result:=false;
S:=Drive+":";
Flags:=mci_Open_Type or mci_Open_Element;
With OpenParm do
begin
dwCallback := 0;
lpstrDeviceType := "CDAudio";
lpstrElementName := PChar(S);
end;
Err := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
IF Err<>0 Then exit;
DeviceID:=OpenParm.wDeviceID;
try
Err:=mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
IF Err=0 Then exit;
Result:=True;
finally
mciSendCommand(DeviceID, MCI_CLOSE, Flags, Longint(@OpenParm));
end;
end;


Твой пример:

1) Код определения типа носителя (если не CD, то не запускать):
Path:=appication.exename;
if getdrivetype("path[1] "+":\")<>Drive_CDROM then
begin
ShowMessage ("//////////");
Application.terminate;
end;


 
Ru ©   (2003-08-14 13:32) [3]

1. определить количество сидиромов
2. определить буквы сидиромов
3. сравнить букву диска из твоего пути с буквами существующих дисков
4. выдвинуть нужный


 
dataMaster ©   (2003-08-14 13:33) [4]

Ошибочка вышла!!! uses MMSystem не туда написал! ;-)


 
Study   (2003-08-14 13:33) [5]

спасибо


 
Anatoly Podgoretsky ©   (2003-08-14 13:33) [6]

dataMaster © (14.08.03 13:29) [2]
Что по твоему изменилось?
Как был путь path[1]:\ так и остался, а надо бы, что было например d:\
Это первая ошибка, а вторая может не быть буквы вообще 2000/XP/NET


 
Ru ©   (2003-08-14 13:37) [7]

>Anatoly Podgoretsky © (14.08.03 13:33) [6]

э-э-э-э-э, а если "d:\app.exe" то path[1] равно "d", или в чем я ошибся?


 
Mike2 Kouzmine2   (2003-08-14 13:40) [8]

path[1] - да, а вот "path[1]" - вряд ли.


 
Study   (2003-08-14 13:41) [9]

У меня 2000Pro. Букву он видит.


 
Anatoly Podgoretsky ©   (2003-08-14 13:41) [10]

Ru © (14.08.03 13:37) [7]
э-э-э-э-э, а если "d:\app.exe" то path[1] равно "d", то в программу будет передано все равно "path[1]:\"
Это называется болезнь глаз, когда смотришь на код и невидишь явной ошибки, все время обращать внимание на кавычки!!!


 
Anatoly Podgoretsky ©   (2003-08-14 13:42) [11]

Study (14.08.03 13:41) [9]
Я тебе специально не привожу правильный код, что бы ты САМ додумался!


 
Study   (2003-08-14 13:44) [12]

>Anatoly и Mike2
>path[1] - да, а вот "path[1]" - вряд ли.

Sorry, писал по памяти (сижу не за своим компом) и описался.


 
Ru ©   (2003-08-14 13:44) [13]

>Anatoly Podgoretsky © (14.08.03 13:41) [10]

миль пардон


 
dataMaster ©   (2003-08-14 14:13) [14]

Anatoly Podgoretsky © (14.08.03 13:41) [10]

>Это называется болезнь глаз, когда смотришь на код и невидишь явной ошибки, все время обращать внимание на кавычки!!!

Да... Это называется, перед тем как советовать, попробуй на деле.


 
Study   (2003-08-14 15:20) [15]

Сделал так
if getdrivetype("path[1]"+":\")<>Drive_CDROM
Выводит ошибку
"Несовместимы типы string и PAnsiChar".


 
Игорь Шевченко ©   (2003-08-14 15:39) [16]

Study (14.08.03 15:20) [15]

Значит, это не случайность, а тенденция :)


 
Study   (2003-08-14 16:05) [17]

Блин, опять ошибся
if getdrivetype(path[1]+":\")<>Drive_CDROM


 
app ©   (2003-08-14 16:15) [18]

Тип выражения string, надо привести к PChar



Страницы: 1 вся ветка

Текущий архив: 2003.09.04;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
1-10737
Serval
2003-08-20 07:49
2003.09.04
Запись значения в ячейку Excel


7-11012
AdMiRaL
2003-06-22 20:54
2003.09.04
Faili


8-10844
dronas555
2003-05-06 12:08
2003.09.04
Формат BMP


1-10797
cancel
2003-08-22 10:12
2003.09.04
Возврат строк из DLL


1-10746
Nucl
2003-08-19 00:55
2003.09.04
Управление ScrollBars в StringGrid e