المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: ممكن مساعدة في تنصيب مكون في بيئة Borland Developer studio 2006
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي Borland Delphi > قسم بناء المكونات والأدوات
kingbode
السلام عليكم ورحمة الله وبركاته

وجدت هذا الكود المرفق في مكتبة الأكواد وهو لمكون يتعرف على معلومات عن القرص الصلب...وحاولت إضافة هذا المكون ولكني فشلت وحاولت بكل الطرق وحاولت حتى ان أستدعيه كمكتبة مرفقة في المشورع ولكنه يعطيني أخطاء....فهل من مساعدة مع أمثلة..

وهل هناك مشكلة بالنسبة لبيئة Borland Developer studio 2006
؟؟؟

وما هو آخر إصار من الدلفي ينصح به لعمل الـ Desktop Application + Web Application

ولكم جزيل الشكر
Wael Dalloul
الملف المرفق فارغ ارجوا فحصه
kingbode
معذرة ..وهذه هي المكتبة مرة أخرى وهي من مكتبة الأكواد الموجودة على الموقع ..قسم الدلفي..

كود
//craited by hamuda shokree

unit uIdeDriveInfo;

interface


uses
Windows ,
SysUtils ,
Classes;


const
DFP_GET_VERSION = $00074080;
DFP_SEND_DRIVE_COMMAND = $0007C084;
DFP_RECEIVE_DRIVE_DATA = $0007C088;
IDE_IDENTIFY_DEVICE = $EC;


type
{$Z1}
TDevices = (dmIdePrimary0 , dmIdePrimary1 , dmIdeSecondary0 ,
dmIdeSecondary1 , dmAtapiPrimary0 , dmAtapiPrimary1 ,
dmAtapiSecondary0 , dmAtapiSecondary1);


TDeviceMap = set of TDevices;


TCapability = (cpIdeIdentify , cpAtapiIdentify , cpSmart ,
cpReserved03 , cpReserved04 , cpReserved05 , cpReserved06 ,
cpReserved07 , cpReserved08 , cpReserved09 , cpReserved10 ,
cpReserved11 , cpReserved12 , cpReserved13 , cpReserved14 ,
cpReserved15 , cpReserved16 , cpReserved17 , cpReserved18 ,
cpReserved19 , cpReserved20 , cpReserved21 , cpReserved22 ,
cpReserved23 , cpReserved24 , cpReserved25 , cpReserved26 ,
cpReserved27 , cpReserved28 , cpReserved29 , cpReserved30 ,
cpReserved31);


TCapabilities = set of TCapability;


PGetVersionOutParams = ^TGetVersionOutParams;
TGetVersionOutParams = packed record
Version: Byte;
Revision: Byte;
Reserved1: Byte;
IdeDeviceMap: TDeviceMap;
Capabilities: TCapabilities;
Reserved2: array[0..3] of DWord end;


PIdeRegs = ^TIdeRegs;
TIdeRegs = packed record
FeaturesReg: Byte;
SectorCount: Byte;
SectorNumber: Byte;
CylLow: Byte;
CylHigh: Byte;
DriveHead: Byte;
Command: Byte;
Reserved: Byte end;


PSendCmdInParams = ^TSendCmdInParams;
TSendCmdInParams = packed record
BufferSize: DWord;
DriveRegs: TIdeRegs;
DriveNumber: Byte;
Reserved1: array[1..3] of Byte;
Reserved2: array[0..3] of DWord end;


PDriverStatus = ^TDriverStatus;
TDriverStatus = packed record
DriverError: Byte;
IdeStatus: Byte;
Reserved1: array[2..3] of Byte;
Reserved2: array[0..1] of DWord end;


PSendCmdOutParams = ^TSendCmdOutParams;
TSendCmdOutParams = packed record
BufferSize: DWord;
DriverStatus: TDriverStatus;
Buffer: array[0..255] of Word end;


const
DriveNumberMin = 0;
DriveNumberMax = 3;


type
TDriveNumber = DriveNumberMin..DriveNumberMax;


TIdeDriveInfo = class(TComponent)
private
FCylinders: array[TDriveNumber] of Integer;
FFirmwareRevision: array[TDriveNumber] of String;
FHeads: array[TDriveNumber] of Integer;
FModelNumber: array[TDriveNumber] of String;
FRemovableMedia: array[TDriveNumber] of Boolean;
FSectorsPerTrack: array[TDriveNumber] of Integer;
FSerialNumber: array[TDriveNumber] of String;
protected
procedure CheckDriveNumber(Drive: TDriveNumber); virtual;
function GetCylinders(Drive: TDriveNumber): Integer; virtual;
function GetFirmwareRevision(Drive: TDriveNumber): String;
virtual;
function GetHeads(Drive: TDriveNumber): Integer; virtual;
function GetModelNumber(Drive: TDriveNumber): String; virtual;
function GetRemovableMedia(Drive: TDriveNumber): Boolean;
virtual;
function GetSectorsPerTrack(Drive: TDriveNumber): Integer;
virtual;
function GetSerialNumber(Drive: TDriveNumber): String; virtual;
procedure QueryDrive(Drive: TDriveNumber); virtual;
public
constructor Create(AOwner: TComponent); override;
property Cylinders[Drive: TDriveNumber]: Integer
read GetCylinders;
property FirmwareRevision[Drive: TDriveNumber]: String
read GetFirmwareRevision;
property Heads[Drive: TDriveNumber]: Integer read GetHeads;
property ModelNumber[Drive: TDriveNumber]: String
read GetModelNumber;
property RemovableMedia[Drive: TDriveNumber]: Boolean
read GetRemovableMedia;
property SectorsPerTrack[Drive: TDriveNumber]: Integer
read GetSectorsPerTrack;
property SerialNumber[Drive: TDriveNumber]: String
read GetSerialNumber; end;


EIdeDriveInfo = class(Exception);


procedure Register;


implementation


procedure Register;
begin
RegisterComponents( ' HAMUDA ' , [TIdeDriveInfo]) end;


constructor TIdeDriveInfo.Create(AOwner: TComponent);
var
I: TDriveNumber;
begin
inherited Create(AOwner);
for I : = DriveNumberMin to DriveNumberMax do
QueryDrive(I) end;


procedure TIdeDriveInfo.CheckDriveNumber(Drive: TDriveNumber);
begin
if (Drive < DriveNumberMin) or (Drive > DriveNumberMax) then
raise EIdeDriveInfo.CreateFmt( ' The drive number ( % d) is out ' +
' of range; the allowable range is % d to % d ' , [Drive ,
DriveNumberMin , DriveNumberMax]) end;


function TIdeDriveInfo.GetCylinders(Drive: TDriveNumber): Integer;
begin
CheckDriveNumber(Drive);
Result : = FCylinders[Drive] end;


function TIdeDriveInfo.GetFirmwareRevision(Drive: TDriveNumber):
String;
begin
CheckDriveNumber(Drive);
Result : = FFirmwareRevision[Drive] end;


function TIdeDriveInfo.GetHeads(Drive: TDriveNumber): Integer;
begin
CheckDriveNumber(Drive);
Result : = FHeads[Drive] end;


function TIdeDriveInfo.GetModelNumber(Drive: TDriveNumber): String;
begin
CheckDriveNumber(Drive);
Result : = FModelNumber[Drive] end;


function TIdeDriveInfo.GetRemovableMedia(Drive: TDriveNumber):
Boolean;
begin
CheckDriveNumber(Drive);
Result : = FRemovableMedia[Drive] end;


function TIdeDriveInfo.GetSectorsPerTrack(Drive: TDriveNumber):
Integer;
begin
CheckDriveNumber(Drive);
Result : = FSectorsPerTrack[Drive] end;


function TIdeDriveInfo.GetSerialNumber(Drive: TDriveNumber): String;
begin
CheckDriveNumber(Drive);
Result : = FSerialNumber[Drive]
end;


procedure TIdeDriveInfo.QueryDrive(Drive: TDriveNumber);
var
BytesReturned: DWord;
CmdIn: TSendCmdInParams;
CmdOut: TSendCmdOutParams;
DriveName: String;
H: THandle;
I: Integer;
VersionInfo: TGetVersionOutParams;
begin
FCylinders[Drive] : = 0;
FFirmwareRevision[Drive] : = ' ';
FHeads[Drive] : = 0;
FModelNumber[Drive] : = ' ';
FRemovableMedia[Drive] : = False;
FSectorsPerTrack[Drive] : = 0;
FSerialNumber[Drive] : = ' ';
DriveName : = Format( ' \\.\PHYSICALDRIVE % d ' , [Drive]);
H : = CreateFile(PChar(DriveName) , GENERIC_READ or GENERIC_WRITE , 0 ,
nil , OPEN_EXISTING , 0 , 0);
if H = INVALID_HANDLE_VALUE then
Exit;
try
FillChar(VersionInfo , SizeOf(VersionInfo) , 0);
BytesReturned : = 0;
if not DeviceIoControl(H , DFP_GET_VERSION , nil , 0 , @VersionInfo ,
SizeOf(VersionInfo) , BytesReturned , nil) then
Exit;
if not (cpIdeIdentify in VersionInfo.Capabilities) then
Exit;
FillChar(CmdIn , SizeOf(CmdIn) , 0);
CmdIn.BufferSize : = 0;
CmdIn.DriveRegs.Command : = IDE_IDENTIFY_DEVICE;
CmdIn.DriveNumber : = Drive;
FillChar(CmdOut , SizeOf(CmdOut) , 0);
CmdOut.BufferSize : = SizeOf(CmdOut.Buffer);
BytesReturned : = 0;
if not DeviceIoControl(H , DFP_RECEIVE_DRIVE_DATA , @CmdIn ,
SizeOf(CmdIn) , @CmdOut , SizeOf(CmdOut) , BytesReturned ,
nil) then
Exit;
with CmdOut do begin
for I : = 10 to 19 do
Buffer[I] : = (Lo(Buffer[I]) shl 8) + Hi(Buffer[I]);
for I : = 23 to 46 do
Buffer[I] : = (Lo(Buffer[I]) shl 8) + Hi(Buffer[I]);
FRemovableMedia[Drive] : = (Buffer[0] and $80) < > 0;
FCylinders[Drive] : = Buffer[1];
FHeads[Drive] : = Buffer[3];
FSectorsPerTrack[Drive] : = Buffer[6];
SetLength(FSerialNumber[Drive] , 20);
Move(Buffer[10] , FSerialNumber[Drive][1] ,
Length(FSerialNumber[Drive]));
FSerialNumber[Drive] : = Trim(FSerialNumber[Drive]);
SetLength(FFirmwareRevision[Drive] , 8);
Move(Buffer[23] , FFirmwareRevision[Drive][1] ,
Length(FFirmwareRevision[Drive]));
FFirmwareRevision[Drive] : = Trim(FFirmwareRevision[Drive]);
SetLength(FModelNumber[Drive] , 40);
Move(Buffer[27] , FModelNumber[Drive][1] ,
Length(FModelNumber[Drive]));
FModelNumber[Drive] : = Trim(FModelNumber[Drive]) end;
finally
CloseHandle(H) end end;


end.
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.