الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ممكن مساعدة في تنصيب مكون في بيئة Borland Developer studio 2006

مغلق
بدأه kingbode في 10 سبتمبر 2006 · 2 رد · 2,543 مشاهدة · في قسم بناء المكونات والأدوات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

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

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

؟؟؟

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

ولكم جزيل الشكر

UIDriveInfo.rar

تم تعديل هذه المشاركة بواسطة kingbode في 10 سبتمبر 2006 في 09:56

#2

الملف المرفق فارغ ارجوا فحصه

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#3

معذرة ..وهذه هي المكتبة مرة أخرى وهي من مكتبة الأكواد الموجودة على الموقع ..قسم الدلفي..

//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 : = (Lo(Buffer) shl 8) + Hi(Buffer); 
for I : = 23 to 46 do 
Buffer : = (Lo(Buffer) shl 8) + Hi(Buffer); 
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.

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…