Форум: "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