Форум: "Система";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];
ВнизКолличество дисков Найти похожие ветки
← →
EleKtroNik (2002-09-29 20:56) [0]Добрых суток.
Мастера, как определить кол-во(логических и физических),
тип(CD,HDD,Flopy), имя(типа- А,D,E) и фаиловую систему.
Желательно в примерах };)//
← →
.Dot (2002-09-29 20:57) [1]колво getdrivetype
второе не знаю =(
← →
Dot (2002-09-29 20:58) [2]колво getdrivetype
второе не знаю =(
← →
Dot (2002-09-29 21:00) [3]ну опера глючит...
← →
EleKtroNik (2002-09-29 21:02) [4]
> Dot
Проверем. А с остольным кто подсобит?
А то скоро жать сроки будут :(
← →
Viktor Kushnir (2002-09-30 07:21) [5]Сорри, что не отредактированно, но мне в универ надо... А вообще все просто. Главная вункция - MakeDirTree. почти все выдрано из TDriveComboBox,на панельке Win311
function VolumeID(DriveChar: Char): string;
var
OldErrorMode: Integer;
NotUsed, VolFlags: DWORD;
Buf: array [0..MAX_PATH] of Char;
begin
OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
Buf[0] := #$00;
if GetVolumeInformation(PChar(DriveChar + ":\"), Buf, DWORD(sizeof(Buf)),
nil, NotUsed, VolFlags, nil, 0) then
SetString(Result, Buf, StrLen(Buf))
else Result := "";
if DriveChar < "a" then
Result := AnsiUpperCaseFileName(Result)
else
Result := AnsiLowerCaseFileName(Result);
Result := Format("%s",[Result]);
finally
SetErrorMode(OldErrorMode);
end;
end;
function NetworkVolume(DriveChar: Char): string;
var
Buf: Array [0..MAX_PATH] of Char;
DriveStr: array [0..3] of Char;
BufferSize: DWORD;
begin
BufferSize := sizeof(Buf);
DriveStr[0] := UpCase(DriveChar);
DriveStr[1] := ":";
DriveStr[2] := #0;
if WNetGetConnection(DriveStr, Buf, BufferSize) = WN_SUCCESS then
begin
SetString(Result, Buf, BufferSize);
if DriveChar < "a" then
Result := AnsiUpperCaseFileName(Result)
else
Result := AnsiLowerCaseFileName(Result);
end
else
Result := VolumeID(DriveChar);
end;
function SlashSep(const Path, S: String): String;
begin
if AnsiLastChar(Path)^ <> "\" then
Result := Path + "\" + S
else
Result := Path + S;
end;
procedure TMain.MakeDirTree;
var
DriveNum: Integer;
DriveChar: Char;
DriveType: TDriveType;
DriveBits: set of 0..25;
Caption :ShortString;
DtNode :TTreeNode;
NodeData :^TNodeData;
begin
New(NodeData);
NodeData^.Name := ExtractFileName(GetDTPath);
NodeData^.Path := GetDTPath+"\";
NodeData^.NType := ftOther;
DtNode := TreeView.Items.Add(nil,NodeData^.Name);
DTNode.ImageIndex := 8;
DTNode.SelectedIndex := 8;
DtNode.Data := NodeData;
Integer(DriveBits) := GetLogicalDrives;
for DriveNum := 0 to 25 do
begin
if not (DriveNum in DriveBits) then Continue;
DriveChar := Char(DriveNum + Ord("a"));
DriveType := TDriveType(GetDriveType(PChar(DriveChar + ":\")));
DriveChar := Upcase(DriveChar);
case DriveType of
// dtFloppy: Caption := "Floppy Drive ("+DriveChar + ":)";
dtFixed: Caption := VolumeID(DriveChar) + " ("+DriveChar + ":)";
dtNetwork: Caption := NetworkVolume(DriveChar) + " ("+DriveChar + ":)";
dtCDROM: Caption := VolumeID(DriveChar) + " ("+DriveChar + ":)";
dtRAM: Caption := VolumeID(DriveChar) + " ("+DriveChar + ":)";
end;
If (DriveType = dtFloppy) and ((DriveChar = "A") or (DriveChar = "B")) Then
Caption := "Гибкий диск ("+DriveChar + ":)";
If (DriveType = dtFloppy) and not ((DriveChar = "A") or (DriveChar = "B")) Then
Caption := "Сменный диск ("+DriveChar + ":)";
New(NodeData);
NodeData^.Name := DriveChar + ":\";
NodeData^.Path := NodeData^.Name;
NodeData^.NType := ftDisk;
With TreeView.Items.Add(nil,Caption) Do
Begin
Data := NodeData;
HasChildren := HasChildDir(NodeData^.Path);
case DriveType of
// dtFloppy: ImageIndex := 1;
dtFixed: ImageIndex := 2;
dtNetwork: ImageIndex := 3;
dtCDROM: ImageIndex := 4;
dtRAM: ImageIndex := 5;
end;
If (DriveType = dtFloppy) and ((DriveChar = "A") or (DriveChar = "B")) Then ImageIndex := 1;
If (DriveType = dtFloppy) and not ((DriveChar = "A") or (DriveChar = "B")) Then ImageIndex := 5;
Selectedindex := imageIndex;
End;
end;
AddNodes(TreeView,nil,GetDtPath+"\",False);
If not DtNode.Expanded Then DtNode.Expand(False);
end;
← →
EleKtroNik (2002-10-02 20:06) [6]Еше есть предложения ?
← →
Юрий Зотов (2002-10-02 23:19) [7]Кол-во дисков - GetLogicalDrives или GetLogicalDriveStrings.
Тип диска - GetDriveType.
Файловая система - GetVolumeInformation.
Объем кода - 10% от приведенного выше.
← →
Viktor Kushnir (2002-10-03 07:12) [8]Конечно, я же вышеприведенный не правил, а как было, со всем лишним и кинул.
← →
EleKtroNik (2002-10-03 12:50) [9]Юрий Зотов.
Спасибо!
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c