永发信息网

delphi中怎么获得分区的名称?,我举个例子

答案:3  悬赏:80  手机版
解决时间 2021-05-05 12:51
  • 提问者网友:低吟詩仙的傷
  • 2021-05-05 05:27

例如:在我的电脑中,有三个分区

最开始他们的名字都是' 本地磁盘 '的 ,后来我改成如下的名字了

---

-

我想在delphi中获得他们的名字,,

拿C盘做个例子

请在,button1 的单击事件里面写下获取C盘名字具体的代码,

并且把C盘名字赋给edit1.text把,

-

谢谢拉!

最佳答案
  • 五星知识达人网友:一把行者刀
  • 2021-05-05 05:40

var


sysname,diskname array[0..225] of  char;


@num,max,flag,sysname :DWORD;


-


button1的单击事件里面写下


GetVolumeInformation(pchar('d:\'), diskname, 255,@num,max,flag,sysname,255);


edit1.text:= diskname;


-


diskname就是你要的卷标名,,


简单吧,其他变量是一些其他系统信息的,,你想了解可以去百度查一下,或者加我

全部回答
  • 1楼网友:千夜
  • 2021-05-05 07:11

//函数,返回分区信息 Function GetHardDiskPartitionInfo(const DriveLetter:Char;     var VolumeName,VolumeSerialNumber,PartitionType:string;     var TotalSpace,TotalFreeSpace:string): string; var   NotUsed: DWORD;   VolumeFlags: DWORD;   VolumeInfo: array[0..MAX_PATH] of Char;   VSNumber: DWORD;   PType: array[0..32] of Char;   VName:array[0..32] of Char;   FreeS,TotalS:Int64;   TotalF:Int64; begin

  if not GetVolumeInformation(PChar(DriveLetter + ':\'),     @VName, SizeOf(VolumeInfo), @VSNumber, NotUsed,     VolumeFlags, PType, 32) then     result:='卷信息未能完全返回'#13#10;   VolumeName:=strpas(VName);   VolumeSerialNumber:=InttoHex(VSNumber,8);   PartitionType:=StrPas(PType);   if not GetDiskFreeSpaceEx(PChar(DriveLetter + ':\'),FreeS,TotalS,@TotalF) then     result:=result+'获取卷空间大小失败';   TotalSpace:=FloatToStr(Round(TotalS / 1024 / 1024 /1024 * 100) / 100);   TotalFreeSpace:=FloatToStr(Round(TotalF / 1024 / 1024 /1024 * 100) / 100); end;

//读取卷标到Edit.text

procedure TForm1.btn4Click(Sender: TObject); var   VName,VSNumber,PType:string;   TotalS,TotalF:string; begin   GetHardDiskPartitionInfo('c',VName,VSNumber,PType, TotalS,TotalF);  //C盘符自己改成要读取的   edt1.Text :=VName; end;

//修改磁盘卷标

procedure TForm1.btn3Click(Sender: TObject); var  VName:PChar; begin  VName:=PChar (edt2.Text);  SetVolumeLabel('c:\',VName);   //C盘符自己改 end;

  • 2楼网友:佘樂
  • 2021-05-05 06:23
var  NotUsed: DWORD;  VolumeFlags: DWORD;  VolumeInfo: array[0..MAX_PATH] of Char;  VSNumber: DWORD;  PType: array[0..32] of Char;  VName:array[0..32] of Char;  VolumeName: string;begin  if not GetVolumeInformation(PChar('c:\'),                       @VName, SizeOf(VolumeInfo), @VSNumber, NotUsed,                       VolumeFlags, PType, 32) then  begin   end else begin      VolumeName:=strpas(VName); if volumeName = '' then        edit1.text := '本地磁盘'       else         edit1.text := volumename;  end;end;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯