Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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
3-14443
Part
2002-11-18 09:27
2002.12.05
Not Null поля!!! Помогите!!


7-14834
BOI
2002-10-03 13:44
2002.12.05
Как поймать окончание копирования файла


14-14730
AL2k2
2002-11-13 17:18
2002.12.05
Кто я? Где я? Куда я? И, главное, НАФИГА?!!


7-14827
pag77
2002-10-03 02:40
2002.12.05
системные клавиши


1-14612
SoftAl
2002-11-23 20:18
2002.12.05
TListView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский