Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.05;
Скачать: CL | DM;

Вниз

Колличество дисков   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-14628
Kurt
2002-11-23 18:28
2002.12.05
Не подскажите как сделать чтоб в GroupBox-e фонт Caption-а сделат


3-14418
Step[B.M.]
2002-11-16 17:55
2002.12.05
Как в Firebird поменять пароль SYSDBA ???


14-14748
Urmas Tormoz
2002-11-14 11:29
2002.12.05
Что заготавливать-то


1-14656
oleg_er
2002-11-25 15:23
2002.12.05
StatusBar


6-14713
начинающий програмер
2002-10-09 16:06
2002.12.05
PROXY