FileForums

FileForums (https://fileforums.com/index.php)
-   Conversion Tutorials (https://fileforums.com/forumdisplay.php?f=55)
-   -   How to install the directory automatically points to the Max Drive? (https://fileforums.com/showthread.php?t=98337)

52098994 04-10-2016 09:21

How to install the directory automatically points to the Max Drive?
 
How to install the directory automatically points to the Max Drive?

I write this error

http://hoop8.com/1610A/iymywcOA.png

http://hoop8.com/1610A/BF0b4Knm.png

Razor12911 04-10-2016 13:13

These go here
http://fileforums.com/showthread.php?t=98274

lolaya 05-10-2016 06:23

how to copy folder to Documents auto*?

konami etc. save game ...

JRD! 05-10-2016 09:47

Quote:

Originally Posted by lolaya (Post 452496)
how to copy folder to Documents auto*?

konami etc. save game ...

Please make your request in the appropriate section.

lolaya 06-10-2016 07:33

O.o

Razor12911 07-10-2016 02:27

Quote:

Originally Posted by JRD! (Post 452554)
Not a thank you in 48 h, if it do not agree, it must be said, if it is just the size and not free space, I don't know, but I know not against, it's that this is the last time that I help...

Haha, same thing I'm dealing with, you sometimes wonder if the thanks button is hidden from other users, at least to show appreciation.
I was approached by this guys who asked this question because he failed to solve a simple code, the code was pretty simple so after telling him what to do, he sent an attachment and asked for help with the code, I ignored it, he then sent PM, on the case, same day, I then had to leave my assignment and help him, helped him, he then asks another question, no thanks received in the process.

http://fileforums.com/showthread.php?t=98306
http://fileforums.com/showthread.php?t=98345 , this question is ignored on purpose.

Just do this, they ignore thanks button, ignore question.

52098994 09-10-2016 10:50

Quote:

Originally Posted by JRD! (Post 452554)
Not a thank you in 48 h, if it do not agree, it must be said, if it is just the size and not free space, I don't know, but I know not against, it's that this is the last time that I help...

be a long time See your reply,I am very sorry:)
my English is poor.

Automatic installation path to the Maximum free space drive
Check all Maximum free space drive (except Flash-USB, CD Drive,USB disk....only checks for hard disk)
IF
C free space:50G
D free space:100G
E free space:200G
F free space:180G
Default installation path to E drive(Maximum free space drive)

think you:)

52098994 09-10-2016 11:07

Quote:

Originally Posted by Razor12911 (Post 452469)

be a long time See your reply,I am very sorry
my English is poor.

Is to ask questions in this post?

JRD! 09-10-2016 16:55

1 Attachment(s)
Certainly the improved:
Code:

#ifdef UNICODE
  #define AW "W"
#else
  #define AW "A"
#endif


type
  TDiskInfo = record
    DriveRoot: string;
    FreeSpace: cardinal;
    TotalSpace: cardinal;
  end;

  TDiskInfos = array of TDiskInfo;

function GetDriveType(lpRootPathName: string): UINT;
  external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: string): DWORD;
  external 'GetLogicalDriveStrings{#AW}@kernel32.dll stdcall';

Function GetMaxFreeSpace(Value: String): String;
var
  S: String;
  I, J: Integer;
  DiskInfos: TDiskInfos;
begin
  I := 0; J:=0;
  if GetLogicalDriveStrings(0, #0) > 0 then
  begin
    SetLength(S, GetLogicalDriveStrings(0, #0));
    if GetLogicalDriveStrings(Length(S), S) > 0 then
    begin
      S := TrimRight(S) + #0;
      while Pos(#0, S) > 0 do
      begin
        if (GetDriveType(Copy(S, 1, Pos(#0, S) - 1)) = 3) then
        begin

          Inc(I);
          SetLength(DiskInfos, I);
          DiskInfos[I-1].DriveRoot:=Copy(S, 1, Pos(#0, S) - 1);
          GetSpaceOnDisk(DiskInfos[I-1].DriveRoot, True, DiskInfos[I-1].FreeSpace, DiskInfos[I-1].TotalSpace);
        end;
        Delete(S, 1, Pos(#0, S));
      end;
      for I := 0 to Length(DiskInfos) -1 do
      begin
        if I = 0 then
        J := DiskInfos[i].FreeSpace else
        begin
          if J > DiskInfos[i].FreeSpace then J := J else
          begin
            J := DiskInfos[i].FreeSpace;
            Result:=DiskInfos[i].DriveRoot;
          end;
        end;
      end;
    end;
  end;
end;


52098994 10-10-2016 05:53

Quote:

Originally Posted by JRD! (Post 452643)
Certainly the improved:
Code:

#ifdef UNICODE
  #define AW "W"
#else
  #define AW "A"
#endif


type
  TDiskInfo = record
    DriveRoot: string;
    FreeSpace: cardinal;
    TotalSpace: cardinal;
  end;

  TDiskInfos = array of TDiskInfo;

function GetDriveType(lpRootPathName: string): UINT;
  external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: string): DWORD;
  external 'GetLogicalDriveStrings{#AW}@kernel32.dll stdcall';

Function GetMaxFreeSpace(Value: String): String;
var
  S: String;
  I, J: Integer;
  DiskInfos: TDiskInfos;
begin
  I := 0; J:=0;
  if GetLogicalDriveStrings(0, #0) > 0 then
  begin
    SetLength(S, GetLogicalDriveStrings(0, #0));
    if GetLogicalDriveStrings(Length(S), S) > 0 then
    begin
      S := TrimRight(S) + #0;
      while Pos(#0, S) > 0 do
      begin
        if (GetDriveType(Copy(S, 1, Pos(#0, S) - 1)) = 3) then
        begin

          Inc(I);
          SetLength(DiskInfos, I);
          DiskInfos[I-1].DriveRoot:=Copy(S, 1, Pos(#0, S) - 1);
          GetSpaceOnDisk(DiskInfos[I-1].DriveRoot, True, DiskInfos[I-1].FreeSpace, DiskInfos[I-1].TotalSpace);
        end;
        Delete(S, 1, Pos(#0, S));
      end;
      for I := 0 to Length(DiskInfos) -1 do
      begin
        if I = 0 then
        J := DiskInfos[i].FreeSpace else
        begin
          if J > DiskInfos[i].FreeSpace then J := J else
          begin
            J := DiskInfos[i].FreeSpace;
            Result:=DiskInfos[i].DriveRoot;
          end;
        end;
      end;
    end;
  end;
end;


Perfect!!! Thank you

52098994 13-10-2016 12:55

Quote:

Originally Posted by JRD! (Post 452643)
Certainly the improved:
Code:

#ifdef UNICODE
  #define AW "W"
#else
  #define AW "A"
#endif


type
  TDiskInfo = record
    DriveRoot: string;
    FreeSpace: cardinal;
    TotalSpace: cardinal;
  end;

  TDiskInfos = array of TDiskInfo;

function GetDriveType(lpRootPathName: string): UINT;
  external 'GetDriveType{#AW}@kernel32.dll stdcall';
function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: string): DWORD;
  external 'GetLogicalDriveStrings{#AW}@kernel32.dll stdcall';

Function GetMaxFreeSpace(Value: String): String;
var
  S: String;
  I, J: Integer;
  DiskInfos: TDiskInfos;
begin
  I := 0; J:=0;
  if GetLogicalDriveStrings(0, #0) > 0 then
  begin
    SetLength(S, GetLogicalDriveStrings(0, #0));
    if GetLogicalDriveStrings(Length(S), S) > 0 then
    begin
      S := TrimRight(S) + #0;
      while Pos(#0, S) > 0 do
      begin
        if (GetDriveType(Copy(S, 1, Pos(#0, S) - 1)) = 3) then
        begin

          Inc(I);
          SetLength(DiskInfos, I);
          DiskInfos[I-1].DriveRoot:=Copy(S, 1, Pos(#0, S) - 1);
          GetSpaceOnDisk(DiskInfos[I-1].DriveRoot, True, DiskInfos[I-1].FreeSpace, DiskInfos[I-1].TotalSpace);
        end;
        Delete(S, 1, Pos(#0, S));
      end;
      for I := 0 to Length(DiskInfos) -1 do
      begin
        if I = 0 then
        J := DiskInfos[i].FreeSpace else
        begin
          if J > DiskInfos[i].FreeSpace then J := J else
          begin
            J := DiskInfos[i].FreeSpace;
            Result:=DiskInfos[i].DriveRoot;
          end;
        end;
      end;
    end;
  end;
end;





http://hoop8.com/1610B/FZg54zNP.jpg

What is this error?
why?

JRD! 29-06-2017 12:44

Code:

#ifdef UNICODE
  #define AW "W"
#else
  #define AW "A"
#endif


function GetDriveType(lpRootPathName: string): UINT;
  external 'GetDriveType{#AW}@kernel32.dll stdcall';

function GetMaxFreeSpaceDrive: String;
var
  i: Integer;
  sDriveRoot: string;
  iLastMax, iNewMax, iTotal: Cardinal;
begin
  iLastMax:=0;
  for i := 1 to 26 do
  begin
    sDriveRoot := Chr(i+64)+':';
    if GetDriveType(sDriveRoot) = 3 then
    begin
      GetSpaceOnDisk(sDriveRoot, True, iNewMax, iTotal);
      if iLastMax < iNewMax then
      begin
        iLastMax := iNewMax;
        Result:=sDriveRoot;
      end;
    end;
  end;
end;


Chayan Manna 03-07-2017 19:56

Quote:

Originally Posted by JRD! (Post 460284)
Code:

#ifdef UNICODE
  #define AW "W"
#else
  #define AW "A"
#endif


function GetDriveType(lpRootPathName: string): UINT;
  external 'GetDriveType{#AW}@kernel32.dll stdcall';

function GetMaxFreeSpaceDrive: String;
var
  i: Integer;
  sDriveRoot: string;
  iLastMax, iNewMax, iTotal: Cardinal;
begin
  iLastMax:=0;
  for i := 1 to 26 do
  begin
    sDriveRoot := Chr(i+64)+':';
    if GetDriveType(sDriveRoot) = 3 then
    begin
      GetSpaceOnDisk(sDriveRoot, True, iNewMax, iTotal);
      if iLastMax < iNewMax then
      begin
        iLastMax := iNewMax;
        Result:=sDriveRoot;
      end;
    end;
  end;
end;


Perfect code !!!!!
Thanks !!!!!
Please can you add a function
That's here:
If the max drive is c then the path will be C:/Programfiles/{#Appname}
Otherwise it will be something else like E:/{#Appname}
Thanks :)

JRD! 04-07-2017 10:59

Simply call the function with your constant at the end:

GetMaxFreeSpaceDrive + '\' + ExpandConstant('{#Appname}');

Chayan Manna 04-07-2017 12:07

Quote:

Originally Posted by JRD! (Post 460452)
Simply call the function with your constant at the end:

GetMaxFreeSpaceDrive + '\' + ExpandConstant('{#Appname}');

Please give an Example. :)


All times are GMT -7. The time now is 02:54.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
FileForums @ https://fileforums.com