نمایش نتایج 1 تا 40 از 120

نام تاپیک: مرجع توابع دلفی

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    Lightbulb توابع RoundUp و RoundDown

    تابع Round به بالا :


    Function RoundUp(Num : Real) :Real;
    begin
    SetRoundMode(rmUp);
    RoundUp := RoundTo(Num,0);
    end;


    تابع Round به پايين :


    Function RoundDown(Num : Real) :Real;
    begin
    SetRoundMode(rmDown);
    RoundDown := RoundTo(Num,0);
    end;

  2. #2

    Lightbulb تابع جمع دو عدد n رقمي



    Function Sum(x,y:String):String;
    // Programer: Alireza Talebi
    var
    S,S2,xi,yi:String;
    Max:Integer;
    i,n,Temp,x1,y1:integer;
    begin
    xi:='';
    yi:='';
    if StrLen(PChar(Trim(x))) >= StrLen(PChar(Trim(y))) then
    begin
    Max := StrLen(PChar(Trim(x)));
    for i := 1 to Max - StrLen(PChar(Trim(y))) do
    yi := yi + '0';
    end else
    begin
    Max := StrLen(PChar(Trim(y)));
    for i := 1 to Max - StrLen(PChar(Trim(x))) do
    xi := xi + '0';
    end;
    xi := Trim(xi + x);
    yi := Trim(yi + y);
    S := '';
    n := 0;
    for i:= Max downto 1 do
    begin
    Temp:=0;
    x1 := StrToInt(xi[i]);
    y1 := StrToInt(yi[i]);
    Temp:=x1+y1+n;
    if Temp < 10 then begin
    S := S + IntToStr(Temp);
    n := 0;
    end
    else
    begin
    S := S + IntToStr(Temp mod 10);
    n := 1;
    end;
    end;
    S2 := '';
    for i:= StrLen(PChar(Trim(S))) downto 1 do
    S2 := S2 + S[i];
    Sum := S2;
    end;


  3. #3

    Lightbulb تابع بدست آوردن مشخصات كامل هارد ديسك


    function GetIdeSerialNumber(i:Integer) : String;
    const IDENTIFY_BUFFER_SIZE = 512;
    type
    TIDERegs = packed record
    bFeaturesReg : BYTE; // Used for specifying SMART "commands".
    bSectorCountReg : BYTE; // IDE sector count register
    bSectorNumberReg : BYTE; // IDE sector number register
    bCylLowReg : BYTE; // IDE low order cylinder value
    bCylHighReg : BYTE; // IDE high order cylinder value
    bDriveHeadReg : BYTE; // IDE drive/head register
    bCommandReg : BYTE; // Actual IDE command.
    bReserved : BYTE; // reserved for future use. Must be zero.
    end;
    TSendCmdInParams = packed record
    // Buffer size in bytes
    cBufferSize : DWORD;
    // Structure with drive register values.
    irDriveRegs : TIDERegs;
    // Physical drive number to send command to (0,1,2,3).
    bDriveNumber : BYTE;
    bReserved : Array[0..2] of Byte;
    dwReserved : Array[0..3] of DWORD;
    bBuffer : Array[0..0] of Byte; // Input buffer.
    end;
    TIdSector = packed record
    wGenConfig : Word;
    wNumCyls : Word;
    wReserved : Word;
    wNumHeads : Word;
    wBytesPerTrack : Word;
    wBytesPerSector : Word;
    wSectorsPerTrack : Word;
    wVendorUnique : Array[0..2] of Word;
    sSerialNumber : Array[0..19] of CHAR;
    wBufferType : Word;
    wBufferSize : Word;
    wECCSize : Word;
    sFirmwareRev : Array[0..7] of Char;
    sModelNumber : Array[0..39] of Char;
    wMoreVendorUnique : Word;
    wDoubleWordIO : Word;
    wCapabilities : Word;
    wReserved1 : Word;
    wPIOTiming : Word;
    wDMATiming : Word;
    wBS : Word;
    wNumCurrentCyls : Word;
    wNumCurrentHeads : Word;
    wNumCurrentSectorsPerTrack : Word;
    ulCurrentSectorCapacity : DWORD;
    wMultSectorStuff : Word;
    ulTotalAddressableSectors : DWORD;
    wSingleWordDMA : Word;
    wMultiWordDMA : Word;
    bReserved : Array[0..127] of BYTE;
    end;
    PIdSector = ^TIdSector;
    TDriverStatus = packed record
    // Error code from driver, or 0 if no error.
    bDriverError : Byte;
    // Contents of IDE Error register. Only valid when bDriverError is SMART_IDE_ERROR.
    bIDEStatus : Byte;
    bReserved : Array[0..1] of Byte;
    dwReserved : Array[0..1] of DWORD;
    end;
    TSendCmdOutParams = packed record
    // Size of bBuffer in bytes
    cBufferSize : DWORD;
    // Driver status structure.
    DriverStatus : TDriverStatus;
    // Buffer of arbitrary length in which to store the data read from the drive.
    bBuffer : Array[0..0] of BYTE;
    end;
    var hDevice : THandle;
    cbBytesReturned : DWORD;
    SCIP : TSendCmdInParams;
    aIdOutCmd : Array [0..(SizeOf(TSendCmdOutParams)+IDENTIFY_BUFFER_SIZE-1)-1] of Byte;
    IdOutCmd : TSendCmdOutParams absolute aIdOutCmd;
    procedure ChangeByteOrder( var Data; Size : Integer );
    var ptr : PChar;
    i : Integer;
    c : Char;
    begin
    ptr := @Data;
    for i := 0 to (Size shr 1)-1 do
    begin
    c := ptr^;
    ptr^ := (ptr+1)^;
    (ptr+1)^ := c;
    Inc(ptr,2);
    end;
    end;
    begin
    Result := ''; // return empty string on error
    if SysUtils.Win32Platform=VER_PLATFORM_WIN32_NT then // Windows NT, Windows 2000
    begin
    // warning! change name for other drives: ex.: second drive '\\.\PhysicalDrive1\'
    hDevice := CreateFile( '\\.\PhysicalDrive0', GENERIC_READ or GENERIC_WRITE,
    FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0 );
    end
    else // Version Windows 95 OSR2, Windows 98
    hDevice := CreateFile( '\\.\SMARTVSD', 0, 0, nil, CREATE_NEW, 0, 0 );
    if hDevice=INVALID_HANDLE_VALUE then Exit;
    try
    FillChar(SCIP,SizeOf(TSendCmdInParams)-1,#0);
    FillChar(aIdOutCmd,SizeOf(aIdOutCmd),#0);
    cbBytesReturned := 0;
    // Set up data structures for IDENTIFY command.
    with SCIP do
    begin
    cBufferSize := IDENTIFY_BUFFER_SIZE;
    // bDriveNumber := 0;
    with irDriveRegs do
    begin
    bSectorCountReg := 1;
    bSectorNumberReg := 1;
    // if Win32Platform=VER_PLATFORM_WIN32_NT then bDriveHeadReg := $A0
    // else bDriveHeadReg := $A0 or ((bDriveNum and 1) shl 4);
    bDriveHeadReg := $A0;
    bCommandReg := $EC;
    end;
    end;
    if not DeviceIoControl( hDevice, $0007c088, @SCIP, SizeOf(TSendCmdInParams)-1,
    @aIdOutCmd, SizeOf(aIdOutCmd), cbBytesReturned, nil ) then Exit;
    finally
    CloseHandle(hDevice);
    end;
    with PIdSector(@IdOutCmd.bBuffer)^ do
    begin
    ChangeByteOrder( sSerialNumber, SizeOf(sSerialNumber) );
    (PChar(@sSerialNumber)+SizeOf(sSerialNumber))^ := #0;
    case i of
    0: Result := PChar(@sModelNumber);
    1: Result := PChar(@sSerialNumber);
    2: Result := PChar(@sFirmwareRev);
    end;
    end;
    end;


    مثال :


    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    Edit1.Text := Trim(GetIdeSerialNumber(0));
    Edit2.Text := Trim(GetIdeSerialNumber(1));
    Edit3.Text := Trim(GetIdeSerialNumber(2));
    end;


قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •