procedure TForm1.Button1Click(Sender: TObject);
var
  i,j,DType:integer;
  C,DiskString: String;
  DiskArray:array[0..10] of string;
begin
  for i:=65 to 90 do
    for j := 0 to 10 do
      begin
        C:=chr(i)+':\';
        DType := GetDriveType(PChar(C));
        if DType = 2 then
        begin
          DiskArray[j]:=C;  //目的是:如果有多个可移动磁盘,就储存到数组里
          DiskString := Format(#32#32#32+'可移动磁盘 %s',[C]);
          ListBox1.Items.AddObject(DiskString, Pointer(i));
        end;
      end;
end;代码如上,但到底怎样改啊 ?

解决方案 »

  1.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
      ss: TStrings;
      i, l: integer;
      DiskArray: array of string;
      procedure Getdisks(Strings: TStrings);
      const BufSize = 256;
      var
        Buffer: PChar;
        P: PChar;
      begin
        GetMem(Buffer, BufSize);
        try
          Strings.BeginUpdate;
          try
            Strings.Clear;
            if GetLogicalDriveStrings(BufSize, Buffer) <> 0 then begin
                P := Buffer;
                while P^ <> #0 do begin
                    Strings.Add(P);
                    Inc(P, StrLen(P) + 1);
                  end;
              end;
          finally
            Strings.EndUpdate;
          end;
        finally
          FreeMem(Buffer, BufSize);
        end;
      end;begin
      ListBox1.Items.Clear;
      ss := TStringList.Create;
      Getdisks(ss);
      for i := 0 to ss.Count - 1 do
        begin
          if (GetDriveType(PChar(ss[i] + ':\')) and DRIVE_REMOVABLE) > 0 then
            begin
              ListBox1.Items.Add(ss[i]);
              l := length(DiskArray);
              SetLength(DiskArray, l + 1);
              DiskArray[l] := ss[i];
            end;    end;
      FreeAndNil(ss);
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,j,DType:integer;
      C,DiskString: String;
      DiskArray:array[0..10] of string;
    begin
      j := 0;
      for i:=65 to 90 do
      begin
        C:=chr(i)+':\';
        DType := GetDriveType(PChar(C));
        if DType = 2 then
        begin
          DiskArray[j]:=C;  
          DiskString := Format(#32#32#32+'可移动磁盘 %s',[C]);
          ListBox1.Items.AddObject(DiskString, Pointer(i));
          inc(j);
        end;
      end;
    end;