β’ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° Cardinal Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π² Π½Π΅ΠΉ Π½Π°Π±ΠΎΡΠ° Π±ΠΈΡΠΎΠ²ΡΡ ΡΠ»Π°Π³ΠΎΠ² Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ;
β’ Π±ΡΡΠ΅Ρ Π΄Π»Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (ΠΈ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π°).
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 4.4 ΡΡΠ½ΠΊΡΠΈΠΈ GetDrivelnf ormation ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ (Π·Π°ΠΏΠΈΡΠΈ) Drivelnf ΠΎ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ (Π° ΡΠ°ΠΊΠΆΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π² Π½Π΅Π΅ ΡΡΡΡΠΊΡΡΡΡ, Ρ ΡΠ°Π½ΡΡΠ΅ΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ· Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΈ fsOptions ΡΠ»Π°Π³ΠΈ) ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 4.5.
...ΠΠΈΡΡΠΈΠ½Π³ 4.5.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π΄ΠΈΡΠΊΠ΅
Type
//ΠΠ°ΠΏΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅
FSOptions = record
CaseSensitive: Boolean; //ΠΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΠΏΡΡΠ΅ΠΉ
//ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠ΅Π³ΠΈΡΡΡ
SupportCompression: Boolean; //Π€Π°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°
//ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΆΠ°ΡΠΈΠ΅
IsCompressed: Boolean; //ΠΠΈΡΠΊ ΡΠΆΠ°Ρ
end;
//ΠΠ°ΠΏΠΈΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΄ΠΈΡΠΊΠ΅
DriveInfo = record
DriveLabel: String; //ΠΠ΅ΡΠΊΠ° Π΄ΠΈΡΠΊΠ°
FileSystemName: String; //Π€Π°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΈΡΠΊΠ°
FileSystemOptions: FSOptions; //ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
SerialNumber: DWORD; //Π‘Π΅ΡΠΈΠΉΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΡΠΎΠΌΠ°
MaxFileNameLen: Cardinal; //ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄Π»ΠΈΠ½Π° ΠΈΠΌΠ΅Π½ΠΈ
//ΡΠ°ΠΉΠ»Π°
end;
ΠΠ°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ β ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π½ΠΎΡΠΈΡΠ΅Π»Ρ Π΄ΠΈΡΠΊΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ API-ΡΡΠ½ΠΊΡΠΈΠΈ GetDriveType. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π·Π°Π΄Π°ΡΡΠΈΠΉ ΠΊΠΎΡΠ½Π΅Π²ΡΡ ΠΏΠ°ΠΏΠΊΡ Π΄ΠΈΡΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π‘: \, ΠΏΡΠΈΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΡΠ»ΡΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½). Π€ΡΠ½ΠΊΡΠΈΡ GetDriveType Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠ΅Π΅ ΡΠΈΠΏ Π΄ΠΈΡΠΊΠ°. ΠΠ°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄ΠΈΡΠΊΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠΉ API-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 4.6.
...ΠΠΈΡΡΠΈΠ½Π³ 4.6.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π½ΠΎΡΠΈΡΠ΅Π»Ρ Π΄ΠΈΡΠΊΠ°
function GetDriveTypeName(root: String): String;
begin
case GetDriveType(PAnsiChar(root)) of
DRIVE_UNKNOWN: GetDriveTypeName := \'ΠΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½\
DRIVE_REMOVABLE: GetDriveTypeName := \'Π‘ΠΌΠ΅Π½Π½ΡΠΉ\
DRIVE_FIXED: GetDriveTypeName := \'Π€ΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ\
DRIVE_REMOTE: GetDriveTypeName := \'Π£Π΄Π°Π»Π΅Π½Π½ΡΠΉ (ΡΠ΅ΡΠ΅Π²ΠΎΠΉ)\
DRIVE_CDROM: GetDriveTypeName := \'ΠΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊ\
DRIVE_RAMDISK: GetDriveTypeName := \'RAM-Π΄ΠΈΡΠΊ\
else
GetDriveTypeName := \'\' //ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ
end;
end;
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΊΠΈ Π΄ΠΈΡΠΊΠ°
ΠΠ°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΡΠ»ΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΊΡ Π΄ΠΈΡΠΊΠ°? Π‘ΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Ρ: Π²ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΠΎΡΡΡΠΊΠ°Π½ΠΈΠΈ Π½ΡΠΆΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ API-ΡΡΠ½ΠΊΡΠΈΡ SetVolumeLabel (Π»ΠΈΡΡΠΈΠ½Π³ 4.7).
...ΠΠΈΡΡΠΈΠ½Π³ 4.7.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΊΠΈ Π΄ΠΈΡΠΊΠ°
function SetDriveLabel(root, newLabel: String): Boolean;
begin
SetDriveLabel :=
SetVolumeLabel(PAnsiChar(root), PAnsiChar(newLabel)) <> False;
end;
Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 4.7 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π΄Π»Ρ API-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΊΠΈ Π΄ΠΈΡΠΊΠ°, ΠΈΠ·Π±Π°Π²Π»ΡΡΡΠ°Ρ Π½Π°Ρ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ API-ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ²ΠΎΠΉΡΡΠ² Π΄ΠΈΡΠΊΠΎΠ²
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΠΈΡΠΊΠ°ΠΌΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΠΎΠ±ΡΠ°ΡΡΠΈΠΉ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΠ²ΠΎΠ΄ΡΡΠ΅Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π»ΡΠ±ΠΎΠΌ ΠΈΠ· Π΄ΠΈΡΠΊΠΎΠ² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠΊΠ½ΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π° ΡΠΈΡ. 4.1.
Π ΠΈΡ. 4.1. ΠΠΊΠ½ΠΎ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ Π΄ΠΈΡΠΊΠ°Ρ
Π Π°Π±ΠΎΡΠ° ΡΠΎΡΠΌΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½Π° ΡΠΈΡ. 4.1, ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠΎΡΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΈΡΠΊΠΎΠ² (Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π΄ΠΈΡΠΊ ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π΅ΠΌ) (Π»ΠΈΡΡΠΈΠ½Π³ 4.8).
...ΠΠΈΡΡΠΈΠ½Π³ 4.8.
Π‘ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° Π΄ΠΈΡΠΊΠΎΠ²
procedure TForm1.FormCreate(Sender: TObject);
begin
//ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π±ΡΠΊΠ² Π΄ΠΈΡΠΊΠΎΠ²
if GetDriveLetters(cboDrives.Items) > 0 then
begin
//ΠΡΠ΄Π΅Π»ΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ Π΄ΠΈΡΠΊ
cboDrives.ItemIndex := 0;
cboDrivesSelect(self);
end
else
Button1.Enabled := False;
end;
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π΄ΠΈΡΠΊΠ°Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ Π±ΡΠΊΠ²Ρ Π΄ΠΈΡΠΊΠ° Π² ΡΠΏΠΈΡΠΊΠ΅ (Π»ΠΈΡΡΠΈΠ½Π³ 4.9).
...ΠΠΈΡΡΠΈΠ½Π³ 4.9. ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ Π΄ΠΈΡΠΊΠ΅
procedure TForm1.cboDrivesSelect(Sender: TObject);
var info: DriveInfo;
root: String;
fullSize, freeSize: Int64;
begin
root := cboDrives.Items[cboDrives.ItemIndex];
//ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ Π΄ΠΈΡΠΊΠ΅
GetDriveInformation(root, info);
//ΠΠ±ΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΄ΠΈΡΠΊΠ΅ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅
txtLabel.Text := info.DriveLabel;
txtDriveType.Text := GetDriveTypeName(root);
txtFSName.Text := info.FileSystemName;
txtSN.Text := IntToHex(Int64(info.SerialNumber), 8);
txtMaxFileName.Text := IntToStr(Integer(info.MaxFileNameLen));
//Π€Π»Π°ΠΆΠΊΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
chkCaseSensitive.Checked := info.FileSystemOptions.CaseSensitive;
chkCompression.Checked := info.FileSystemOptions.SupportCompression;
chkCompressed.Checked := info.FileSystemOptions.IsCompressed;
//Π Π°Π·ΠΌΠ΅Ρ Π΄ΠΈΡΠΊΠ°
fullSize := GetDriveSize(root);
if fullSize <> β1 then
freeSize := GetDriveFreeSpace(root)
else
begin //ΠΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π΄ΠΈΡΠΊΡ
fullSize := 0;
freeSize := 0;
end;
//..ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ
driveSize.Series[0].Clear;
driveSize.Series[0].Add( freeSize, \'Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΎ\');
driveSize.Series[0].Add( fullSize β freeSize, \'ΠΠ°Π½ΡΡΠΎ\')
end;
ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π΄ΠΈΡΠΊΡ ΠΌΠ΅ΡΠΊΡ, Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ (txtLabel) (Π»ΠΈΡΡΠΈΠ½Π³ 4.10).
...ΠΠΈΡΡΠΈΠ½Π³ 4.10.
ΠΠ°Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ Π΄ΠΈΡΠΊΠ°
procedure TForm1.Button1Click(Sender: TObject);
begin
//ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΊΠΈ Π΄ΠΈΡΠΊΠ°
if not SetDriveLabel(cboDrives.Items[cboDrives.ItemIndex],
txtLabel.Text)
then
MessageBox(self.Handle, \'ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΠΊΡ Π΄ΠΈΡΠΊΠ°\',
\'ΠΡΠΈΠ±ΠΊΠ°\', MB_ICONEXCLAMATION)
else
//ΠΠ΅ΡΠ΅ΡΠΈΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΄ΠΈΡΠΊΠ΅
cboDrivesSelect(self);
end;
Π’Π°Π±Π»ΠΈΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π²ΠΈΠ΄Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ Π² Π½ΠΈΡ . Π’ΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΎΡΠ½ΠΈΡΡ, ΡΡΠΎ Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ TChart ΡΠΎΠ·Π΄Π°Π½ ΠΎΠ΄ΠΈΠ½ ΡΡΠ΄ ΡΠΈΠΏΠ° Pie (ΠΊΡΡΠ³ΠΎΠ²Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°). Π£ ΡΡΠΎΠ³ΠΎ ΡΡΠ΄Π° ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ ΠΊ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅, ΡΡΠΎΠ±Ρ Π½Π΅ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π² Π»Π΅Π³Π΅Π½Π΄Π΅.
4.2. ΠΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΈ ΠΏΡΡΠΈ
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠ·Π½Π°Π²Π°ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π°ΠΆΠ½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Windows. ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΡΠ΅ΠΉ ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ°.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΎΡΠ½ΠΈΡΡ, ΡΡΠΎ Π·Π° ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π° ΡΠΎΡΠ½Π΅Π΅, ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π΄Π°Π»Π΅Π΅. Π Π΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ ΠΠΠ₯Π ΠΠ’Π, ΡΠ°Π²Π½ΠΎΠΉ 260. ΠΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ (ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ API) Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ ΠΏΡΡΠΈ. ΠΠ΄Π΅ΡΡ Π½Π°Π»ΠΈΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ°ΡΠ°Π΄ΠΎΠΊΡ: Ρ ΠΎΡΡ ΡΠ°ΠΊΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠ°ΠΊ FAT32, ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ°ΠΊ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π°ΠΆΠ΅ Π΄Π²Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΄Π»ΠΈΠ½ΠΎΠΉ 255 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
...ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡΠΈ Π΄ΠΎΡΠΊΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΄Π»ΠΈΠ½ΠΎΠΉ 255 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π΄ΠΈΡΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π‘: \). ΠΠ°ΡΠ°Π»ΠΎΠ³ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΈΠΌΡ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 244 ΡΠΈΠΌΠ²ΠΎΠ»Π°. Π‘ ΡΡΠ΅ΡΠΎΠΌ Π΄Π»ΠΈΠ½Ρ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ (ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ 247) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅Ρ ΠΎΡΡΠ°Π²ΡΠΈΠ΅ΡΡ 13 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΡΠΎΠ±Ρ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠ°ΠΉΠ»Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ 8.3 (MS-DOS).
Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ WINDOWS ΠΈ system
ΠΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π»ΠΈ Π²Π°ΠΌ Ρ ΠΎΡΡ ΡΠ°Π· ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π²ΠΈΡΠ΅Π»Π° ΠΎΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΠ°ΠΏΠΎΠΊ Windows? ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ Π²Ρ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Ρ ΠΎΡΠΎΡΠΎ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π½Π΅ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠ°ΠΏΠΊΠ° WINDOWS Π²ΡΠ΅Π³Π΄Π° C:\WIND0WS, a system Π²ΡΠ΅Π³Π΄Π° C:\WINDOWS\system. ΠΠ΅Π΄Ρ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½ΠΈΡΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π΄ΠΈΡΠΊ Π:\, Π° ΠΏΠ°ΠΏΠΊΡ Π΄Π»Ρ Windows Π½Π°Π·Π²Π°ΡΡ Linux. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΈΡΡΠ΅ΠΌΠ½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° Windows Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ NT ΠΈΠΌΠ΅Π΅Ρ ΠΈΠΌΡ system32, ΠΈ ΠΊΡΠΎ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΡ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Windows. Π ΡΠ°ΠΊΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π²ΡΡΡΡΠ°Ρ API-ΡΡΠ½ΠΊΡΠΈΠΈ: GetWindowsDirectory ΠΈ GetSystemDirectory. ΠΠ½ΠΈ ΠΎΠ±Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ Π±ΡΡΠ΅Ρ ΠΈ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ Π±ΡΡΠ΅Ρ, ΠΈΠ»ΠΈ 0 Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠ»Ρ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ Π΄Π»Ρ Delphi ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΡΡΠΎ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ (Π²ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ PathFunctions, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π½Π° Π΄ΠΈΡΠΊΠ΅, ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊ ΠΊΠ½ΠΈΠ³Π΅, Π² ΠΏΠ°ΠΏΠΊΠ΅ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π°). ΠΡΠ°ΠΊ, ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΏΠΊΠΈ Windows ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 4.11.
...ΠΠΈΡΡΠΈΠ½Π³ 4.11.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ WINDOWS
function GetWinDir(): String;
var
buffer: String;
len: UINT;
begin
SetLength(buffer, MAX_PATH + 1);
len := GetWindowsDirectory(PAnsiChar(buffer), MAX_PATH);
SetLength(buffer, len);
GetWinDir := buffer;
end;
ΠΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ, ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΌΠ΅ΡΡΠΎ GetWindowsDirectory Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡyΠ½ΠΊΡΠΈΡGetSystemDirectory.
ΠΠΌΠ΅Π½Π° Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ»Ρ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² Windows ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° Temp. ΠΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ. ΠΡΠΈΡΠ΅ΠΌ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π²Π΅ΡΡΠΈΡΡ Windows (NT, 2000, Π₯Π ) ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Π΄Π»Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠ°ΠΊ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Temp ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ API-ΡΡΠ½ΠΊΡΠΈΡ GetTempPath. ΠΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ Π±ΡΡΠ΅Ρ ΠΈ Π΄Π»ΠΈΠ½Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ°. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ, ΠΈΠ»ΠΈ 0, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°. Π€ΡΠ½ΠΊΡΠΈΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ°, ΡΠΊΡΡΠ²Π°ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ Π±ΡΡΠ΅ΡΠΎΠΌ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ², ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π²ΡΠΌ ΡΠ°Π½Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ (Π»ΠΈΡΡΠΈΠ½Π³ 4.12).