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

Вниз

Диски   Найти похожие ветки 

 
Ivolg   (2004-10-28 13:14) [0]

Как мона проверить сколько у тебя на компе дисков(А,С,D,E....и т.д) и добавить список имеющихся тдисков в ComboBox СПАСИБО!!!


 
Ivolg   (2004-10-28 13:15) [1]

Или лутше проверить где находится папка главная Windows и добавить пусть в переменную Path!!


 
Ivolg   (2004-10-28 13:16) [2]

Или лутше проверить где находится папка главная Windows и добавить путь в переменную Path!!


 
Ivolg   (2004-10-28 13:16) [3]

Или лутше проверить на каком диске находится Система и добавить!!


 
Ivolg   (2004-10-28 13:17) [4]

Или лутше проверить на каком диске находится Система!!


 
begin...end ©   (2004-10-28 13:18) [5]

Не проще ли использовать TDriveComboBox ?

Если не проще, то см. API-функции GetLogicalDrives и GetLogicalDriveStrings.
Или - перебор с помощью GetDriveType.


 
-=SS=- ©   (2004-10-28 13:20) [6]

А использовать TShellComboBox на вкладке Samples и с параметром
Root := rfMyComputer взападло ?


 
begin...end ©   (2004-10-28 13:20) [7]


> [1] Ivolg   (28.10.04 13:15)
> [2] Ivolg   (28.10.04 13:16)
> [3] Ivolg   (28.10.04 13:16)
> [4] Ivolg   (28.10.04 13:17)

Ну ты загрузил... Чего ж тебе нужно-то?


 
Ivolg   (2004-10-28 13:29) [8]

begin...end

Уж больно не красивы компонет! Я делаю с ComboBoxEx


 
Ivolg   (2004-10-28 13:34) [9]

begin...end

Если не в падло, напиши пожайлуста пример?!


 
begin...end ©   (2004-10-28 13:37) [10]

Вот, только что написал. Извращайся на здоровье...

var
 I: Byte;
 Res: Cardinal;
begin
 Res := GetLogicalDrives;
 for I := 0 to 26 do
   if (Res shr I) and 1 = 1 then
     ComboBoxName.Items.Append(Chr(I + 65))
end.


:-)


 
Ivolg   (2004-10-28 13:48) [11]

Спасибо!!


 
GanibalLector ©   (2004-10-28 23:39) [12]


const
DriveConst: array[1..26] of DWord =
  ($1,       $2,       $4,      $8,
   $10,      $20,      $40,     $80,
   $100,     $200,     $400,    $800,
   $1000,    $2000,    $4000,   $8000,
   $10000,   $20000,   $40000,  $80000,
   $100000,  $200000,  $400000, $800000,
   $1000000, $2000000);

procedure TForm1.FormCreate(Sender: TObject);
var QQ,i:DWord;
begin
QQ:=GetLogicalDrives();
for i:=1 to 26 do
if (QQ and DriveConst[i])>0 then
Combobox1.Items.Add(chr($40+i)+":\");
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var st:string;
VolumeName,FileSystemName : array [0..MAX_PATH-1] of Char;
VolumeSerialNumber,MaximumComponentLength,FileSystemFlags:DWord;
SectorsPerCluster,BytesPerSector,NumberOfFreeClusters,TotalNumberOfClusters:DWord;
begin

SetErrorMode(SEM_FAILCRITICALERRORS);

case GetDriveType(PChar(Combobox1.Text)) of
0:                st:="Type :"+chr(09)+chr(09)+chr(09)+"Unknown"+#10#13;
1:                st:="Type :"+chr(09)+chr(09)+chr(09)+"No_ROOT_DIR"+#10#13; // if RootPathName=nil
DRIVE_REMOVABLE:  st:="Type :"+chr(09)+chr(09)+chr(09)+"Flopy"+#10#13;
DRIVE_FIXED:      st:="Type :"+chr(09)+chr(09)+chr(09)+"Hard"+#10#13;
DRIVE_REMOTE:     st:="Type :"+chr(09)+chr(09)+chr(09)+"Remote"+#10#13;
DRIVE_CDROM :     st:="Type :"+chr(09)+chr(09)+chr(09)+"CD-ROM"+#10#13;
DRIVE_RAMDISK:    st:="Type :"+chr(09)+chr(09)+chr(09)+"RAM-Disk"+#10#13;end;
st:=st+#10#13;

if GetVolumeInformation(Pchar(Combobox1.Text),VolumeName,MAX_PATH,
@VolumeSerialNumber,MaximumComponentLength,FileSystemFlags,FileSystemName,MAX_PATH)=true  then
      begin
st:=st+"Name :"       +chr(09)+chr(09)+chr(09)+VolumeName+#10#13;
st:=st+"Serial :"     +chr(09)+chr(09)+chr(09)+inttohex(VolumeSerialNumber,8)+#10#13;
st:=st+"Length :"     +chr(09)+chr(09)        +inttostr(MaximumComponentLength)+#10#13;
st:=st+"File system :"+chr(09)+chr(09)        +FileSystemName+#10#13;
      end
else st:=st+"Drive not ready"+#10#13; //ShowMessage(SysErrorMessage(GetLastError));
st:=st+#10#13;

if GetDiskFreeSpace(Pchar(Combobox1.Text),SectorsPerCluster,
BytesPerSector,NumberOfFreeClusters,TotalNumberOfClusters)=true then
      begin
st:=st+"SectorsPerCluster :"+chr(09)+inttostr(SectorsPerCluster)+#10#13;
st:=st+"BytesPerSector : "+chr(09)+inttostr(BytesPerSector)+#10#13;
st:=st+#10#13;
st:=st+"FreeClusters : "+chr(09)+chr(09)+inttostr(NumberOfFreeClusters)+#10#13;
st:=st+"BusyClusters :"+chr(09)+chr(09)+inttostr(TotalNumberOfClusters-NumberOfFreeClusters)+#10#13;
st:=st+"TotalClusters :"+chr(09)+chr(09)+inttostr(TotalNumberOfClusters)+#10#13;
st:=st+#10#13;
st:=st+"FreeBytes :"+chr(09)+chr(09)+inttostr(NumberOfFreeClusters*(Int64(BytesPerSector*SectorsPerCluster)))+#10#13;
st:=st+"Busy :"+chr(09)+chr(09)+chr(09)+inttostr(TotalNumberOfClusters*(Int64(BytesPerSector*SectorsPerCluster))-
NumberOfFreeClusters*(Int64(BytesPerSector*SectorsPerCluster)))+#10#13;
st:=st+"TotalBytes :"+chr(09)+chr(09)+inttostr(TotalNumberOfClusters*(Int64(BytesPerSector*SectorsPerCluster)))+#10#13;
      end;

messagedlg(Pchar(st),MtInformation,[MbOk],0);
end;


 
GuAV ©   (2004-10-29 02:27) [13]

GanibalLector ©   (28.10.04 23:39) [12]
DriveConst: array[1..26] of DWord =
 ($1,       $2,       $4,      $8,
  $10,      $20,      $40,     $80,
  $100,     $200,     $400,    $800,
  $1000,    $2000,    $4000,   $8000,
  $10000,   $20000,   $40000,  $80000,
  $100000,  $200000,  $400000, $800000,
  $1000000, $2000000);


Оригинально!

GanibalLector ©   (28.10.04 23:39) [12]
+#10#13;


Тоже хакер ?
http://delphimaster.net/view/1-1098466615/

вообще почему бы не воспользоваться TStringList ?
Я бы ещё понял что экономишь размер ехе и не подключаешь ничего если бы не это.

> messagedlg(Pchar(st),MtInformation,[MbOk],0);


 
GanibalLector ©   (2004-10-29 02:51) [14]

>Оригинально!
Ну так ;)

>Тоже хакер ?
уже нет

>Я бы ещё понял что экономишь размер ехе и не подключаешь ничего если бы не это.

Не понял...это о чем.Как надо?


 
GuAV ©   (2004-10-29 14:33) [15]

GanibalLector ©   (29.10.04 2:51) [14]
Не понял...это о чем.Как надо?


Я сразу не заметил что это код для приложения с формой, поэтому заподозрил, что не используешь StringList, т.к. не подключешь Classes, для экономии. Сейчас не понимаю почему бы им не воспользоваться. И кстати с Tab"ами не угадал. Возможно нужно было поставить моноширинный шрифт.


 
GanibalLector ©   (2004-10-29 19:09) [16]

> Возможно нужно было поставить моноширинный шрифт.
Дык,расскажи как.


 
GuAV ©   (2004-10-29 20:17) [17]

GanibalLector ©   (29.10.04 19:09) [16]
Дык,расскажи как.


Ну вот так например

with CreateMessageDialog(st, MtInformation, [MbOk]) do
try
  (FindComponent("Message") as TLabel).Font.Name:="MS Serif";
  ShowModal;
finally
  Free;
end;


Тогда можно будет подобрать количество tab"ов, т.к. шрифт заранее известен. А шрифт по умолчанию зависит от настроек пользователя.

Хотя вообще то это тоже не хорошо, т.к. размер диалога и положение кнопки зависят от старого шрифта.

Короче имхо следует или не пытаться расположить тескт сообщения таблицей или использовать listview, или рисовать текст самому, но не пытаться манипулировать с lableом.


 
begin...end ©   (2004-10-29 20:35) [18]


> [10] begin...end ©   (28.10.04 13:37)


> for I := 0 to 26 do    

for I := 0 to 25 do

Настолько я отупел уже, что забыл, сколько букв в латинском алфавите. :о(



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
8-1093890137
Ландграф Павел
2004-08-30 22:22
2004.12.12
чтение формата RealAudio


6-1096272949
DA
2004-09-27 12:15
2004.12.12
WebBrowser


3-1100182927
Katrin
2004-11-11 17:22
2004.12.12
Тригер и переменные


14-1100041467
GanibalLector
2004-11-10 02:04
2004.12.12
Даешь встречу в Харькове ???


9-1091793832
Денис
2004-08-06 16:03
2004.12.12
SNAKE