Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.038 c
1-1101842302
Dot
2004-11-30 22:18
2004.12.12
Опять ресурсы


1-1101817874
Erik1
2004-11-30 15:31
2004.12.12
Как отправить сообщение всем активным формам, одного класса?


14-1101378308
TUser
2004-11-25 13:25
2004.12.12
inline


3-1100059505
Marat
2004-11-10 07:05
2004.12.12
Ошибка при вставке в StringGrid


14-1101200631
Nikolay M.
2004-11-23 12:03
2004.12.12
Excel повисает при открытии внешних данных :(





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский