View Single Post
  #247  
Old 15-03-2013, 20:45
Cesar82's Avatar
Cesar82 Cesar82 is offline
Registered User
 
Join Date: May 2011
Location: Brazil
Posts: 1,074
Thanks: 1,814
Thanked 2,304 Times in 787 Posts
Cesar82 is on a distinguished road
Question

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?
Reply With Quote