//聲明:GetLogicalDriveStrings(
nBufferLength: DWord; {緩沖區大小}
lpBuffer: PAnsiChar {緩沖區}
): DWord;
//緩沖區的結果是這樣儲存的: 譬如 A 驅動器會表示為 A:\ 後面 隔一個空字符, 依次向後;
//所以每個驅動器會占 4 字節.
//舉例:procedure TForm1.FormCreate(Sender: TObject);
var
PStr: PChar;
DriveArr: array[0..4*26] of Char; {每個驅動器 4 字節, 最多 26 個驅動器}
begin
GetLogicalDriveStrings(SizeOf(DriveArr), DriveArr); {函數調用就這麼簡單}
PStr := DriveArr; {因為 PStr 是 #0 結尾的, 所以現在它指向的 是前 4 個字節}
Memo1.Clear; {清空 Memo}
While PStr<>nil do
begin
Memo1.Lines.Add(PStr);
Inc(PStr,StrLen(PStr)+1); {字符串指針是可以運算的, 這裡相當於指針移 動 4 個位置, 而指向下一個}
if(Byte(PStr[0]) = 0) then PStr := nil; {如果下一個的第一個字符就是空, 就 是沒有了, While 等著 nil 終止呢}
end;
end;