Need help.
The code pat below is for Inno Ansi Version.
I wanted modify to work on inno unicode version.
Code:
function GetDC(HWND: DWord): DWord; external '[email protected] stdcall';
function GetDeviceCaps(DC: DWord; Index: Integer): Integer; external '[email protected] stdcall';
function ReleaseDC(HWND: DWord;DC: DWord): Integer; external '[email protected] stdcall';
function GetDriveType(lpDisk: String): Integer; external '[email protected] stdcall setuponly';
function GetVolumeInformation (lpRootPathName,lpVolumeNameBuffer: PAnsiChar; nVolumeNameSize: longint; lpVolumeSerialNumber,lpMaximumComponentLength: Cardinal; lpFileSystemFlags: Cardinal; lpFileSystemNameBuffer: PAnsiChar; nFileSystemNameSize: dword): longword;
external '[email protected] stdcall setuponly';
function GetScreenHeight(): integer;
var dc: DWord;
begin
dc:=GetDC(MainForm.Handle);
Result:=GetDeviceCaps(dc,10);
ReleaseDC(MainForm.Handle,dc);
end;
function GetScreenWidth(): integer;
var dc: DWord;
begin
dc:=GetDC(MainForm.Handle);
Result:=GetDeviceCaps(dc,8);
ReleaseDC(MainForm.Handle,dc);
end;
Function GetFixedDrivesInfo(): Array of Tdrive;
Var l:string;
s,c,n: integer;
FreeMB, TotalMB: Cardinal;
Vl: array of AnsiString;
Fsn: PAnsiChar;
//
Begin
l:='ABCDEFGHIJKLMNOPQRSTUWXYZ';
for c:=1 to length(l) do begin
if GetDriveType(l[c]+':')=DRIVE_FIXED then
begin
n:=GetArrayLength(Result);
s:=GetArrayLength(Vl);
SetArrayLength(Result,n+1);
SetArrayLength(Vl,s+1);
Vl[s]:=StringOfChar(' ',256);
GetVolumeInformation (l[c]+':\',Vl[s],MAX_PATH,0,0,0,PAnsiChar(Fsn),MAX_PATH);
GetSpaceOnDisk(l[c]+':\', True, FreeMB, TotalMB)
Result[n].Letter:=l[c]+':';
Result[n].VolumeName:=Trim(Vl[s]);
Result[n].FreeSpace:=FreeMB;
Result[n].PSize:=TotalMB;
end;
end;
//MsgBox(Result[n].fileSystemname, mbInformation, mb_Ok);
End;
In inno unicode he does not perform this part.
Code:
if GetDriveType(l[c]+':')=DRIVE_FIXED then
begin
n:=GetArrayLength(Result);
s:=GetArrayLength(Vl);
SetArrayLength(Result,n+1);
SetArrayLength(Vl,s+1);
Vl[s]:=StringOfChar(' ',256);
GetVolumeInformation (l[c]+':\',Vl[s],MAX_PATH,0,0,0,PAnsiChar(Fsn),MAX_PATH);
GetSpaceOnDisk(l[c]+':\', True, FreeMB, TotalMB)
Result[n].Letter:=l[c]+':';
Result[n].VolumeName:=Trim(Vl[s]);
Result[n].FreeSpace:=FreeMB;
Result[n].PSize:=TotalMB;
end;
Can help me?