procedure TForm1.Button2Click(Sender: TObject);
var    buffer:array[1..20] of char;
    p:pchar;
    str:string;
begin
 p:=@buffer;
 GetLogicalDriveStrings(20,p);
 str:=strpas(p);
 showmessage(str);
end;
我想得到所有的逻辑盘符,为什么str 中只有a:\?

解决方案 »

  1.   

    //参考如下代码~~
    //GetLogicalDriveStrings(),返回的是得到盘符缓冲的大小
    //盘符与盘符间用#0分隔procedure TForm1.Button1Click(Sender: TObject);
    var
      vBuffer: array[0..256] of Char;
      vSize: DWORD;
      I: Integer;
      S: string;
    begin
      vSize := GetLogicalDriveStrings(256, vBuffer);
      S := '';
      for I := 0 to vSize - 1 do begin
        if vBuffer[I] <> #0 then
          S := S + vBuffer[I]
        else begin
          ShowMessage(S);
          S := '';
        end;
      end;
    end;嘻嘻嘻 伴水 :) 到此一灌 嘻嘻嘻嘻