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

Вниз

Работа с дисками!   Найти похожие ветки 

 
Александр1   (2004-08-17 06:09) [0]

Здравствуйте уважаемые мастера!
Вот алгоритм для определения информации о диске. А в частности определения серийного номера диска:
var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

SerialNum : pdword;
a, b : Cardinal;
Buffer  : array [0..MAX_PATH-1] of char;
begin
new(SerialNum);
if GetVolumeInformation(‘C:\’, Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then
Label1.Caption:= IntToStr(SerialNum^);
dispose(SerialNum);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
VolumeName,
FileSystemName : array [0..MAX_PATH-1] of Char;
MaxComponentLength, FileSystemFlags : Cardinal;
VolumeSerialNo : DWord;
begin
if GetVolumeInformation(‘C:\’,VolumeName,MAX_PATH,@VolumeSerialNo,
MaxComponentLength,FileSystemFlags,
FileSystemName,MAX_PATH) then
begin
Memo1.Lines.Add("VName = "+VolumeName);
Memo1.Lines.Add("SerialNo = $"+IntToHex(VolumeSerialNo,8));
Memo1.Lines.Add("CompLen = "+IntToStr(MaxComponentLength));
Memo1.Lines.Add("Flags = $"+IntToHex(FileSystemFlags,4));
Memo1.Lines.Add("FSName = "+FileSystemName);
end;
end;
end.

ДАННЫЙ ПРИМЕР РАБОТАЕТ!
Но в данном примере необходимо тип диска указывать ‘С:\’, А если сделать так:
var
 Form1: TForm1;
h:string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

SerialNum : pdword;
a, b : Cardinal;
Buffer  : array [0..MAX_PATH-1] of char;
begin
h:="C:\";
new(SerialNum);
if GetVolumeInformation(h, Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then
Label1.Caption:= IntToStr(SerialNum^);
dispose(SerialNum);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
VolumeName,
FileSystemName : array [0..MAX_PATH-1] of Char;
MaxComponentLength, FileSystemFlags : Cardinal;
VolumeSerialNo : DWord;
begin
if GetVolumeInformation(h,VolumeName,MAX_PATH,@VolumeSerialNo,
MaxComponentLength,FileSystemFlags,
FileSystemName,MAX_PATH) then
begin
Memo1.Lines.Add("VName = "+VolumeName);
Memo1.Lines.Add("SerialNo = $"+IntToHex(VolumeSerialNo,8));
Memo1.Lines.Add("CompLen = "+IntToStr(MaxComponentLength));
Memo1.Lines.Add("Flags = $"+IntToHex(FileSystemFlags,4));
Memo1.Lines.Add("FSName = "+FileSystemName);
end;
end;
end.

Где h – string. ЭТОТ ПРИМЕР НЕ РАБОТАЕТ, ХОТЯ ЕГО СУТЬ ОСТАЛАСЬ ТОЙЖЕ.
Помогите пожалуйста сделать так чтобы второй вариант программы работал!
Заранее спасибо за помощь!


 
Dyn`alt ©   (2004-08-17 06:38) [1]

Нужно привести string к PChar
GetVolumeInformation(PChar(h), ...


 
©   (2004-08-17 06:45) [2]

GetVolumeInformation(PChar(h),...


 
Alex Konshin ©   (2004-08-17 11:07) [3]

Опять снова-здорова.
Это серийный номер не диска, а тома.
И информация тоже о томе.



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

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

Наверх




Память: 0.45 MB
Время: 0.037 c
3-1093836012
Sirus
2004-08-30 07:20
2004.09.26
Нужно описание языка SQL Firebird...


3-1093521589
Топ
2004-08-26 15:59
2004.09.26
Дельфи+фокспро


1-1094565678
Новенький
2004-09-07 18:01
2004.09.26
Как получить первую букву слова введенного в Edit?


1-1094541629
KIR
2004-09-07 11:20
2004.09.26
Народ, кто уже работает с D8?


1-1094750155
Ajax
2004-09-09 21:15
2004.09.26
Изменение значения локальных переменных извне





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