Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрытие CD-ROM и его раскручивание 
:(
    Опции темы
p0s0l
Дата 30.3.2004, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Делаю так:
Код
DeviceIOControl(hDriveSync, IOCTL_STORAGE_LOAD_MEDIA, nil, 0, nil, 0, Returned, nil);

Потом так:
Код
DeviceIOControl(hDriveSync, IOCTL_DISK_GET_DRIVE_GEOMETRY, nil, 0, @Geometry, SizeOf(Geometry), Returned, nil);

И еще так:
Код
if GetVolumeInformation(PChar(DrivePath), VolumeName, 256, @Serial, MaxCompLen, FSFlags, nil, 0) then...


IOCTL_STORAGE_LOAD_MEDIA завершается, когда "подставка под кофе" въехала в CD-ROM. Но CD-ROM еще ведь не раскрутился, а раскручивается он у меня ой как долго, и поэтому две последующие функции обламываются...
Как бы раскрутить сидюк? Если просто вставить какой-нибудь sleep(10*1000), то нет, не раскручивается. FindFirst..FindNext тоже обламываются и не раскручивают...
Как например TotalCommander раскручивает сидюк ?



--------------------
С уважением, г-н Посол.
PM   Вверх
Jey_k
Дата 31.3.2004, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


WEB-командир
****


Профиль
Группа: Комодератор
Сообщений: 4149
Регистрация: 16.11.2003
Где: Москва

Репутация: 1
Всего: 61



p0s0l
Думаю придется кодить порты под ассемблером



--------------------
PM MAIL WWW   Вверх
<Spawn>
Дата 31.3.2004, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



То есть нужно лишь раскрутить сидюк? Может воспользоваться ASPI интерфейсом с командой SCSI_PAUSE_RESUME?


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
p0s0l
Дата 31.3.2004, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



<Spawn>, никогда не слышал. Покажи как ?

Добавлено @ 19:17
Jey_k, не это уж слишком. Должен быть нормальный способ...




--------------------
С уважением, г-н Посол.
PM   Вверх
<Spawn>
Дата 31.3.2004, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Вот функция для этого интерфейса переведенная мною с Си из книженции smile.gif)

Код
uses Wnaspi32;

function PauseResume(Adapter, Target: Byte; Pause: Boolean): Byte;
const
 SCSI_PAUSE_RESUME = $4B;
var
 Exec: SRB_ExecSCSICmd;
 hEvent: THandle;
 dwStatus: DWORD;
 i: integer;
begin
 Result := 0;
 ZeroMemory(@Exec, SizeOf(SRB_ExecSCSICmd));
 Exec.SRB_Cmd := SC_EXEC_SCSI_CMD;
 Exec.SRB_HaId := Adapter;
 Exec.SRB_Target := Target;
 Exec.SRB_Lun := 0;
 Exec.SRB_Flags := SRB_DIR_OUT or SRB_EVENT_NOTIFY;
 Exec.SRB_SenseLen := SENSE_LEN;
 Exec.SRB_PostProc := Pointer(hEvent);
 Exec.SRB_CDBLen := 12;
 Exec.CDBByte[0] := SCSI_PAUSE_RESUME;
 if Pause then
   Exec.CDBByte[8] := $00
 else
   Exec.CDBByte[8] := $01;
 for i := 1 to 2 do
 begin
   hEvent := CreateEvent(nil, True, False, nil);
   ResetEvent(hEvent);
   dwStatus := SendASPI32Command(@Exec);
   if dwStatus = SS_COMP then
   begin
     CloseHandle(hEvent);
     Exit;
   end;
   if dwStatus = SS_PENDING then
     if WaitForSingleObject(hEvent, INFINITE) <> WAIT_TIMEOUT then
     begin
       CloseHandle(hEvent);
       Exit;
     end;
 end;
 Result := Exec.SRB_Status;
end;


Но дело в том что нужно еще передать правильные параметры Adapter и Target, для этого ,на сколько я понял, нужно использовать функцию инициализации ASPI(она заодно и количество найденных устройств возвращает). Если ни чего не найдешь по этому поводу, то попробую еще в книженции порыться smile.gif

П.С. Хотя по идее должен быть какой то более простой вариант
Добавлено @ 19:44
Сейчас маленько порылся и нашел еще одну интересную команду - START/STOP UNIT. Она позволяет останавливать\запускать\выгружать\загружать диск.

Это сообщение отредактировал(а) <Spawn> - 31.3.2004, 19:47


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
<Spawn>
Дата 31.3.2004, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Вот я тут маленько наэксперементировался - у меня все прекрасно работает:

Wnaspi32:
Код
unit wnaspi32;
//unit wnaspi32.h version ?.??
//translation version 1.0
//compatible with Delphi 2.0-4.0
//by daNIL,[email protected]
//please, send me any comments or suggestions
//about this file

(****************************************************************************
*                                                                           *
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY     *
* KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE       *
* IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR     *
* PURPOSE.                                                                  *
*                                                                           *
* Copyright (C) 1993-95  Microsoft Corporation.  All Rights Reserved.       *
*                                                                           *
****************************************************************************)

//***************************************************************************
//
// Name:        WNASPI32.H
//
// Description: ASPI for Win32 definitions ('C' Language)
//
//***************************************************************************

interface

uses Windows;

//typedef void *LPSRB;
//typedef void (*PFNPOST)();???????
type LPSRB = Pointer;

function SendASPI32Command(LPSRB:Pointer):DWORD;cdecl;
function GetASPI32SupportInfo:DWORD;cdecl;

const

SENSE_LEN         =   14;      // Default sense buffer length

SRB_DIR_SCSI         =   $00;     // Direction determined by SCSI command
SRB_DIR_IN         =   $08;     // Transfer from SCSI target to host
SRB_DIR_OUT         =   $10;     // Transfer from host to SCSI target
SRB_POSTING         =   $01;     // Enable ASPI posting
SRB_EVENT_NOTIFY              =   $40;     // Enable ASPI event notification
SRB_ENABLE_RESIDUAL_COUNT     =   $04;     // Enable residual byte count reporting
SRB_DATA_SG_LIST        =   $02;     // Data buffer points to scatter-gather list

WM_ASPIPOST         =   $4D42;   // ASPI Post message

//***************************************************************************
//       %%% ASPI Command Definitions %%%
//***************************************************************************

SC_HA_INQUIRY         =   $00;     // Host adapter inquiry
SC_GET_DEV_TYPE        =   $01;     // Get device type
SC_EXEC_SCSI_CMD        =   $02;     // Execute SCSI command
SC_ABORT_SRB         =   $03;     // Abort an SRB
SC_RESET_DEV         =   $04;     // SCSI bus device reset
SC_GET_DISK_INFO              =   $06;     // Get Disk information

//***************************************************************************
//          %%% SRB Status %%%
//***************************************************************************

SS_PENDING         =   $00;     // SRB being processed
SS_COMP                =   $01;     // SRB completed without error
SS_ABORTED                =   $02;     // SRB aborted
SS_ABORT_FAIL                =   $03;     // Unable to abort SRB
SS_ERR                 =   $04;     // SRB completed with error

SS_INVALID_CMD                =   $80;     // Invalid ASPI command
SS_INVALID_HA                =   $81;     // Invalid host adapter number
SS_NO_DEVICE                =   $82;     // SCSI device not installed

SS_INVALID_SRB                =   $E0;     // Invalid parameter set in SRB
SS_FAILED_INIT                =   $E4;     // ASPI for windows failed init
SS_ASPI_IS_BUSY               =   $E5;     // No resources available to execute cmd
SS_BUFFER_TO_BIG              =   $E6;     // Buffer size to big to handle!

//***************************************************************************
//       %%% Host Adapter Status %%%
//***************************************************************************

HASTAT_OK         =   $00;     // Host adapter did not detect an                // error
HASTAT_SEL_TO         =   $11;     // Selection Timeout
HASTAT_DO_DU         =   $12;     // Data overrun data underrun
HASTAT_BUS_FREE        =   $13;     // Unexpected bus free
HASTAT_PHASE_ERR        =   $14;     // Target bus phase sequence                 // failure
HASTAT_TIMEOUT         =   $09;     // Timed out while SRB was                  waiting to beprocessed.
HASTAT_COMMAND_TIMEOUT        =   $0B;     // While processing the SRB, the
        // adapter timed out.
HASTAT_MESSAGE_REJECT        =   $0D;     // While processing SRB, the                 // adapter received a MESSAGE                // REJECT.
HASTAT_BUS_RESET        =   $0E;     // A bus reset was detected.
HASTAT_PARITY_ERROR        =   $0F;     // A parity error was detected.
HASTAT_REQUEST_SENSE_FAILED   =   $10;     // The adapter failed in issuing
        //   REQUEST SENSE.

//***************************************************************************
//    %%% SRB - HOST ADAPTER INQUIRY - SC_HA_INQUIRY %%%
//***************************************************************************
type

SRB_HAInquiry   =  record
SRB_Cmd,    // ASPI command code = SC_HA_INQUIRY
SRB_Status,    // ASPI command status byte
SRB_HaId,    // ASPI host adapter number
SRB_Flags:BYTE;    // ASPI request flags
SRB_Hdr_Rsvd:DWORD;   // Reserved, MUST = 0
HA_Count,    // Number of host adapters present
HA_SCSI_ID,    // SCSI ID of host adapter
HA_ManagerId,                           // String describing the manager
HA_Identifier,                  // String describing the host adapter
HA_Unique:array[0..15]of byte;   // Host Adapter Unique parameters
HA_Rsvd1:WORD;
 end;

PSRB_HAInquiry  = ^SRB_HAInquiry;
TSRB_HAInquiry  = SRB_HAInquiry;


//***************************************************************************
//     %%% SRB - GET DEVICE TYPE - SC_GET_DEV_TYPE %%%
//***************************************************************************
SRB_GDEVBlock =  record
       SRB_Cmd,    // ASPI command code = SC_GET_DEV_TYPE
SRB_Status,    // ASPI command status byte
SRB_HaId,    // ASPI host adapter number
SRB_Flags:BYTE;    // Reserved
SRB_Hdr_Rsvd:DWORD;   // Reserved
SRB_Target,    // Target's SCSI ID
SRB_Lun,    // Target's LUN number
SRB_DeviceType,           // Target's peripheral device type
SRB_Rsvd1:BYTE;
 end;

TSRB_GDEVBlock = SRB_GDEVBlock;
PSRB_GDEVBlock = ^SRB_GDEVBlock;

//***************************************************************************
//    %%% SRB - EXECUTE SCSI COMMAND - SC_EXEC_SCSI_CMD %%%
//***************************************************************************

SRB_ExecSCSICmd =  record
SRB_Cmd,    // ASPI command code = SC_EXEC_SCSI_CMD
SRB_Status,    // ASPI command status byte
SRB_HaId,    // ASPI host adapter number
SRB_Flags:BYTE;    // ASPI request flags
SRB_Hdr_Rsvd:DWORD;   // Reserved
SRB_Target,    // Target's SCSI ID
SRB_Lun:BYTE;    // Target's LUN number
SRB_Rsvd1:WORD;    // Reserved for Alignment
SRB_BufLen:DWORD;        // Data Allocation Length
SRB_BufPointer:Pointer;   // Data Buffer Pointer
SRB_SenseLen,           // Sense Allocation Length
SRB_CDBLen,    // CDB Length
SRB_HaStat,    // Host Adapter Status
SRB_TargStat:BYTE;   // Target Status
SRB_PostProc,                           // Post routine
SRB_Rsvd2:Pointer;          // Reserved
SRB_Rsvd3,           // Reserved for alignment
CDBByte:array[0..15]of byte;  // SCSI CDB
SenseArea:array[0..SENSE_LEN+1]of byte; // Request Sense buffer
end;

TSRB_ExecSCSICmd = SRB_ExecSCSICmd;
PSRB_ExecSCSICmd = ^SRB_ExecSCSICmd;

//***************************************************************************
//      %%% SRB - ABORT AN SRB - SC_ABORT_SRB %%%
//***************************************************************************
SRB_Abort =  record
SRB_Cmd,    // ASPI command code = SC_EXEC_SCSI_CMD
SRB_Status,    // ASPI command status byte
SRB_HaId,    // ASPI host adapter number
SRB_Flags:BYTE;    // Reserved
SRB_Hdr_Rsvd:DWORD;   // Reserved
SRB_ToAbort:Pointer;   // Pointer to SRB to abort
end;

TSRB_Abort = SRB_Abort;
PSRB_Abort = ^SRB_Abort;

//***************************************************************************
//    %%% SRB - BUS DEVICE RESET - SC_RESET_DEV %%%
//***************************************************************************
SRB_BusDeviceReset =  record
SRB_Cmd,    // ASPI command code = SC_EXEC_SCSI_CMD
SRB_Status,    // ASPI command status byte
SRB_HaId,    // ASPI host adapter number
SRB_Flags:BYTE;    // Reserved
SRB_Hdr_Rsvd:DWORD;   // Reserved
SRB_Target,    // Target's SCSI ID
SRB_Lun:BYTE;    // Target's LUN number
SRB_Rsvd1:array[0..11]of byte;  // Reserved for Alignment
SRB_HaStat,    // Host Adapter Status
SRB_TargStat:BYTE;   // Target Status
SRB_PostProc,           // Post routine
SRB_Rsvd2:Pointer;     // Reserved
SRB_Rsvd3,           // Reserved
CDBByte:array[0..15]of byte;  // SCSI CDB
end;

TSRB_BusDeviceReset = SRB_BusDeviceReset;
PSRB_BusDeviceReset = ^SRB_BusDeviceReset;

//***************************************************************************
//    %%% SRB - GET DISK INFORMATION - SC_GET_DISK_INFO %%%
//***************************************************************************
SRB_GetDiskInfo =  record
SRB_Cmd,    // ASPI command code = SC_EXEC_SCSI_CMD
SRB_Status,    // ASPI command status byte
SRB_HaId,    // ASPI host adapter number
SRB_Flags:BYTE;    // Reserved
SRB_Hdr_Rsvd:DWORD;   // Reserved
SRB_Target,    // Target's SCSI ID
SRB_Lun,    // Target's LUN number
SRB_DriveFlags,           // Driver flags
SRB_Int13HDriveInfo,                 // Host Adapter Status
SRB_Heads,    // Preferred number of heads translation
SRB_Sectors:BYTE;   // Preferred number of sectors translation
SRB_Rsvd1:array[0..9]of byte;  // Reserved
 end;

TSRB_GetDiskInfo = SRB_GetDiskInfo;
PSRB_GetDiskInfo = ^SRB_GetDiskInfo;

implementation

const WNASPI = 'wnaspi32.dll';

function SendASPI32Command;external WNASPI name 'SendASPI32Command';
function GetASPI32SupportInfo;external WNASPI name 'GetASPI32SupportInfo';

end.



Прога:

Код
type
 TCDOperation = (cdoStop, cdoResume, cdoEject, cdoInject);

function CDOperation(Adapter, Target: Byte; Operation: TCDOperation): byte;
const
 CDROM_OP = $1B;
var
 Exec: SRB_ExecSCSICmd;
 hEventASPI: THandle;
 dwStatus: DWORD;
 i: integer;
begin
 Result := 0;
 ZeroMemory(@Exec, SizeOf(SRB_ExecSCSICmd));
 with Exec do
 begin
   SRB_Cmd := SC_EXEC_SCSI_CMD;
   SRB_HaId := Adapter;
   SRB_Target := Target;
   SRB_Flags := SRB_DIR_OUT or SRB_EVENT_NOTIFY;
   SRB_SenseLen := SENSE_LEN;
   SRB_PostProc := Pointer(hEventASPI);
   SRB_CDBLen := 12;
   CDBByte[0] := CDROM_OP;
   CDBByte[1] := $00;
   CDBByte[4] := Byte(Operation);
 end;
 hEventASPI := CreateEvent(nil, True, False, nil);
 ResetEvent(hEventASPI);
 dwStatus := SendASPI32Command(@Exec);
 if dwStatus = SS_COMP then
   CloseHandle(hEventASPI);
 if dwStatus = SS_PENDING then
   if WaitForSingleObject(hEventASPI, INFINITE) <> WAIT_TIMEOUT then
     CloseHandle(hEventASPI);

 Result := Exec.SRB_Status;
end;

procedure TForm1.FormCreate(Sender: TObject);
const
 DTYPE_CDROM = 5;
type
//В модуле не правильно определена данная структура, поэтому я ее маленько подправил
 SRB_HAInquiry   =  record
   SRB_Cmd,    // ASPI command code = SC_HA_INQUIRY
   SRB_Status,    // ASPI command status byte
   SRB_HaId,    // ASPI host adapter number
   SRB_Flags:BYTE;    // ASPI request flags
   SRB_Hdr_Rsvd:DWORD;   // Reserved, MUST = 0
   HA_Count,    // Number of host adapters present
   HA_SCSI_ID: BYTE;    // SCSI ID of host adapter
   HA_ManagerId,                           // String describing the manager
   HA_Identifier,                  // String describing the host adapter
   HA_Unique:array[0..15]of byte;   // Host Adapter Unique parameters
  HA_Rsvd1:WORD;
 end;
var
 haInq: SRB_HAInquiry;
 dwStatus, dwGetASPI: DWORD;
 byNumDevice, Target: Byte;
 i, j: integer;
 devType: SRB_GDEVBlock;
begin
 dwGetASPI := GetASPI32SupportInfo;
 case LongRec(dwGetASPI).Bytes[3] of
   SS_COMP: byNumDevice := LongRec(dwGetASPI).Bytes[0];
   SS_FAILED_INIT:
   begin
     MessageDlg('Óñòðîéñòâ íå îáíàðóæåíî!', mtConfirmation, [mbOk], 0);
     Exit;
   end;
 end;
 ZeroMemory(@haInq, SizeOf(SRB_HAInquiry));
 haInq.SRB_Cmd := SC_HA_INQUIRY;
 dwStatus := SendASPI32Command(@haInq);
 while not Boolean(haInq.SRB_Status) do
   Application.ProcessMessages;

 if dwStatus = SS_COMP then
 begin
   Target := haInq.HA_Count;
 end;

 for i := 0 to byNumDevice - 1 do
 begin
   for j := 0 to Target - 1 do
   begin
     ZeroMemory(@devType, SizeOf(SRB_GDEVBlock));
     devType.SRB_Cmd := SC_GET_DEV_TYPE;
     devType.SRB_HaId := i;
     devType.SRB_Target := j;
     SendASPI32Command(@DevType);
     if devType.SRB_Status <> SS_COMP then
       continue;
     if devType.SRB_DeviceType = DTYPE_CDROM then
       CDOperation(i, j, cdoResume);
   end;
 end;
end;


Это сообщение отредактировал(а) <Spawn> - 31.3.2004, 20:55


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
p0s0l
Дата 1.4.2004, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



<Spawn>, thanx, завтра попробую, а щас спать!
Плюс тебе за всё хорошее, как говорится.



--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 1.4.2004, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Блин, палки в колеса... Поначалу материлось, что нет wnaspi32.dll... Поставил ASPI дрова. Потом опять такая фишка:
у меня 1 реальный CD и 2 виртуальных, т.е. всего 3 штуки. На CDOperation идет только 2 раза... И ничего не делается...
Ладно, делаю вообще так:
Код
for i := 0 to byNumDevice - 1 do
  for j := 0 to 7 do
    CDOperation(i, j, cdoEject);

Тоже ноль реакции... Ни в виртуальных, ни в реальном CDюкахничего не происходит.
Функция CDOperation была немного неправильной, SendASPI32Command возвращал ошибку, надо строку hEventASPI := CreateEvent(nil, True, False, nil) поставить перед SRB_PostProc := Pointer(hEventASPI), тогда всё ОК типа, но всё равно глухо (ни одна cdo* не работает)...
Посмотрел - все функции возвращают статус ОК, но ничего не происходит...
Кроме PauseResume - сама функция возвращает 0, в поле Exec.SRB_Status = 4 (SB_ERR)... Там кстати тоже такая же история с hEventASPI, но дело это не спасло...
Где взято определение константы SCSI_PAUSE_RESUME ? Такой константы (самого названия и значения $4B) нет ни в MSDN, ни в хэдерах, идущих с ASPI дровами...

И где ты взял инфу про поле CDBByte, что туда заносить ? То что в CDByte[0] заносится SCSI_START_STP (=$1B) - это понятно, но почему потом именно в [4] заносишь код операции (Stop, Resume, etc...), и почему Stop=0, Resume=1, и т.д. ? Где об этом можно почитать ? (или методом тыка ?) Я там нашел интересные названия констант, хотелось бы испробовать, тем более, что как раз мне это и нужно (работа напрямую с CD, а именно, нахождение Bad-секторов)...





--------------------
С уважением, г-н Посол.
PM   Вверх
<Spawn>
Дата 1.4.2004, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



У меня в книге все расписано по этому интерфейсу. Значения CDBByte зависят от выполняемой команды. SCSI_START_STP тоже описана в книженции. Странно что у тебя не работает, у меня все 4 опреации работают на ура - открываю\закрываю сидюк и останавливаю\запускаю его.
Добавлено @ 15:41
Может у тебя другая версия ДЛЛ-ки? Скажи мыло пришлю свою ДЛЛ.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
p0s0l
Дата 1.4.2004, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Версия 4.71.2
Мыло - есть в профиле, но так скажу: p0s0l_pisem.net



--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 3.4.2004, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



<Spawn>, спасибо. Дрова спасли дело. У меня были Adaptec дрова, а ты мне прислал Nero-дрова. Они работают как-то совсем по-разному... К чему бы это ?



--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1359 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.