AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GetVolumeinformation

Ein Thema von impz · begonnen am 26. Mär 2006 · letzter Beitrag vom 5. Dez 2006
 
Heffalump

Registriert seit: 3. Aug 2005
278 Beiträge
 
RAD-Studio 2009 Ent
 
#6

Re: GetVolumeinformation

  Alt 4. Dez 2006, 17:30
So würde ich das machen
Delphi-Quellcode:
unit DriveInfoUnit;

interface

uses

  System.Runtime.InteropServices,
  System.Text;
type
  DriveInfo = class(System.Object)
    strict private
    _name: System.String;
    [DllImport('kernel32.dll', CharSet=CharSet.Auto, SetLastError=true)]
    class function GetVolumeInformation(
      lpRootPathName: System.String;
      lpVolumeNameBuffer: StringBuilder;
      nVolumeNameSize: Integer;
      var lpVolumeSerialNumber: Integer;
      var lpMaximumComponentLength: Integer;
      var lpFileSystemFlags: Integer;
      lpFileSystemNameBuffer: StringBuilder;
      nFileSystemNameSize: Integer): boolean; static;
    [DLLImport('kernel32.dll')]
    class function GetLastError: Integer; static;
    public
      constructor Create(driveName: string);
    function get_VolumeLabel: String;
      property VolumeLabel: String read get_VolumeLabel;
  end;

implementation

{ DriveInfo }

constructor DriveInfo.Create(driveName: string);
begin
  inherited Create();
  if (driveName = nil) then
    raise NullReferenceException.Create('driveName');
  Self._name := driveName;
end;

class function DriveInfo.GetLastError: Integer;
begin

end;

class function DriveInfo.GetVolumeInformation(lpRootPathName: System.String;
  lpVolumeNameBuffer: StringBuilder; nVolumeNameSize: Integer;
  var lpVolumeSerialNumber, lpMaximumComponentLength,
  lpFileSystemFlags: Integer; lpFileSystemNameBuffer: StringBuilder;
  nFileSystemNameSize: Integer): boolean;
begin

end;

function DriveInfo.get_VolumeLabel: String;
var lpVolumeNameBuffer: StringBuilder;
    nVolumeNameSize: Integer;
    lpVolumeSerialNumber: Integer;
    lpMaximumComponentLength: Integer;
    lpFileSystemFlags: Integer;
    lpFileSystemNameBuffer: StringBuilder;
    nFileSystemNameSize: Integer;
begin
  nVolumeNameSize := 50;
  lpVolumeNameBuffer := StringBuilder.Create(nVolumeNameSize);
  nFileSystemNameSize := 50;
  lpFileSystemNameBuffer := StringBuilder.Create(nFileSystemNameSize);
  if not Self.GetVolumeInformation(
    Self._name,
    lpVolumeNameBuffer,
    nVolumeNameSize,
    lpVolumeSerialNumber,
    lpMaximumComponentLength,
    lpFileSystemFlags,
    lpFileSystemNameBuffer,
    nFileSystemNameSize) then
    begin
      raise ArgumentException.Create('ErrorCode: '+GetLastError.ToString);
    end else
    begin

      Result := lpVolumeNameBuffer.ToString;
    end;

end;

end.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz