Results 1 to 8 of 8

Thread: Schijfnummer lezen met Lazarus

  1. #1
    Senior Member
    Join Date
    Mar 2005
    Location
    Bassenge
    Posts
    424

    Schijfnummer lezen met Lazarus

    Met Delphi - code kan je makkelijk het schijf-nummer lezen vanuit je applicatie. Deze code werkt niet in Lazarus.

    Ik wil met een Lazarus progje zowel met Linux als met Windows het schijf - nummer uitlezen.

    Kan mij iemand hiermee helpen ?
    Dank

  2. #2
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Welke code werkt niet met Lazarus?

  3. #3
    Senior Member
    Join Date
    Mar 2005
    Location
    Bassenge
    Posts
    424
    Deze code werkt met Delphi :


    Code:
    Var :Dummy1, Dummy2,VolSerNum: DWORD;
    
    begin
    GetVolumeInformation('c:\', NIL, 0, @VolSerNum, Dummy1, Dummy2, NIL, 0);
         Label1.Caption := FloatToStr(VolSerNum);
    End;

  4. #4
    Ik heb letterlijk de code in Lazarus 1.0.12 gekopiepeest, Windows (als eerste) in de uses gezet, en ik krijg een 10 cijferig getal.
    Windows als laatste (in ieder geval na Graphics) gaf een bende foutmeldingen bij een - tot nu toe nog niet werkend - grafisch deel.

  5. #5
    In ($fpc)\source\rtl\win\wininc\redef.inc
    (een includefile van de Windows unit)

    Code:
    function GetVolumeInformation(lpRootPathName: PChar; lpVolumeNameBuffer: PChar; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD; var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
      lpFileSystemNameBuffer: PChar; nFileSystemNameSize: DWORD): BOOL; external 'kernel32' name 'GetVolumeInformationA';
    
    function GetVolumeInformationA(lpRootPathName: LPCSTR; lpVolumeNameBuffer: LPCSTR; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD; var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
      lpFileSystemNameBuffer: LPCSTR; nFileSystemNameSize: DWORD): BOOL; external 'kernel32' name 'GetVolumeInformationA';
    
    function GetVolumeInformationW(lpRootPathName: LPWSTR; lpVolumeNameBuffer: LPWSTR; nVolumeNameSize: DWORD; lpVolumeSerialNumber: PDWORD; var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
      lpFileSystemNameBuffer: LPWSTR; nFileSystemNameSize: DWORD): BOOL; external 'kernel32' name 'GetVolumeInformationW';
    VZIW is er geen cross-platform oplossing hiervoor.

    Bart

  6. #6
    Wellicht zinvolle info voor Linux:
    http://www.cyberciti.biz/faq/linux-g...k-information/

    Alternatief is om de info te halen uit /dev/disk/by-id/, zie
    http://superuser.com/questions/46038...nux-disk-drive

    Bart

  7. #7
    Senior Member
    Join Date
    Mar 2005
    Location
    Bassenge
    Posts
    424
    MaartenW :

    Ja dit klopt, onder Windows werkt dit prima, maar mijn vraag stelling was onvolledig, ik zoek achter de Lazarus code om het schijf nummer te lezen op een Linux machine ...

  8. #8
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Er zal waarschijnlijk geen API voor zijn. (in theorie is er sysctl, maar Linux stopt daar niet zo veel in) Uit /proc halen zoals Bart zegt is je beste optie.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •