Lee Jenkins wrote 18 lines
Lee Jenkins wrote:
> On Windows, this method returns the application's directory. IMO, this is wrong
> since its customary to install applications in the Program Files directory and
> with tighter locked down XP/2000 and DEFINITELY Vista, this is a problem since
> you are not usually given permission to write in these destinations now.
>
> I think the GetSpecialDir method should be called (as it is with when the
> "Global" flag is false) with parameter CSIDL_COMMON_DOCUMENTS.
>
> Reported:
>
http://bugs.freepascal.org/view.php?id=11257
>
As a follow up, can anyone suggest how I could access the GetSpecialDir from
outside sysutils.pas? I've tried it and it seems that its not in the interface
section or I think think this is the case. I get a little confused with the
includes.
I just went ahead and accessed the shfolder unit like so in case anyone else has a need to do this before the issue is addressed:
uses
shfolder
;
// .. etc, etc.
function GetSpecialFolderPath(folder : integer) : string;
const
SHGFP_TYPE_CURRENT = 0;
var
path: array [0..MAX_PATH] of char;
begin
if SUCCEEDED(SHGetFolderPath(0,folder,0,SHGFP_TYPE_CURRENT, at path[0])) then
Result := path
else
Result := '';
end;
procedure SaveMyFile(AStringList: TStringList);
var
lPath: string;
begin
lPath := GetSpecialFolderPath(CSIDL_COMMON_DOCUMENTS);
lPath := lPath + PathDelim + 'AFile.txt'
AStringList.SaveToFile(lPath);
end;
Of course, in my actual code its IFDEF'd to use GetAppConfigDir when linux/unix instead of the above function.
Warm Regards,
Lee
"When my company started out, we were really, really, really, really small.
Now...we're just really small."