//聲明:GetLogicalDriveStrings(
nBufferLength: DWORD; {緩沖區(qū)大小}
lpBuffer: PAnsiChar {緩沖區(qū)}
): DWORD;//緩沖區(qū)的結(jié)果是這樣儲(chǔ)存的: 譬如 A 驅(qū)動(dòng)器會(huì)表示為 A: 后面隔一個(gè)空字符, 依次向后;
//所以每個(gè)驅(qū)動(dòng)器會(huì)占 4 字節(jié).
//舉例:procedure TForm1.FormCreate(Sender: TObject);
var
PStr: PChar;
DriveArr: array[0..4*26] of Char; {每個(gè)驅(qū)動(dòng)器 4 字節(jié), 最多 26 個(gè)驅(qū)動(dòng)器}
begin
GetLogicalDriveStrings(SizeOf(DriveArr), DriveArr); {函數(shù)調(diào)用就這么簡單}
PStr := DriveArr; {因?yàn)?PStr 是 #0 結(jié)尾的, 所以現(xiàn)在它指向的是前 4 個(gè)字節(jié)}
Memo1.Clear; {清空 Memo}
While PStr<>nil do
begin
Memo1.Lines.Add(PStr);
Inc(PStr,StrLen(PStr)+1); {字符串指針是可以運(yùn)算的, 這里相當(dāng)于指針移動(dòng) 4 個(gè)位置, 而指向下一個(gè)}
if(Byte(PStr[0]) = 0) then PStr := nil; {如果下一個(gè)的第一個(gè)字符就是空, 就是沒有了, While 等著 nil 終止呢}
end;
end;
nBufferLength: DWORD; {緩沖區(qū)大小}
lpBuffer: PAnsiChar {緩沖區(qū)}
): DWORD;//緩沖區(qū)的結(jié)果是這樣儲(chǔ)存的: 譬如 A 驅(qū)動(dòng)器會(huì)表示為 A: 后面隔一個(gè)空字符, 依次向后;
//所以每個(gè)驅(qū)動(dòng)器會(huì)占 4 字節(jié).
//舉例:procedure TForm1.FormCreate(Sender: TObject);
var
PStr: PChar;
DriveArr: array[0..4*26] of Char; {每個(gè)驅(qū)動(dòng)器 4 字節(jié), 最多 26 個(gè)驅(qū)動(dòng)器}
begin
GetLogicalDriveStrings(SizeOf(DriveArr), DriveArr); {函數(shù)調(diào)用就這么簡單}
PStr := DriveArr; {因?yàn)?PStr 是 #0 結(jié)尾的, 所以現(xiàn)在它指向的是前 4 個(gè)字節(jié)}
Memo1.Clear; {清空 Memo}
While PStr<>nil do
begin
Memo1.Lines.Add(PStr);
Inc(PStr,StrLen(PStr)+1); {字符串指針是可以運(yùn)算的, 這里相當(dāng)于指針移動(dòng) 4 個(gè)位置, 而指向下一個(gè)}
if(Byte(PStr[0]) = 0) then PStr := nil; {如果下一個(gè)的第一個(gè)字符就是空, 就是沒有了, While 等著 nil 終止呢}
end;
end;

