Ja, da haben sie ein Ei gelegt und es nur in iOS reingenommen. Ist aber gleich. Mit folgenden Deklarationen müsste es gehen:
Delphi-Quellcode:
const
NSUserDomainMask = 1;
NSApplicationSupportDirectory = 14;
libFoundation = '/System/Library/Frameworks/Foundation.framework/Foundation';
type
NSSearchPathDirectory = NSUInteger;
PNSArray = Pointer;
Oder Du verwendest gleich den NSFileManager. Der Unterscheid ist, dass der nur existierende Pfade zurückgibt, während NSSearchPathForDirectoriesInDomains immer den entsprechenden Pfad liefert, auch wenn er nicht exstiert (Wie bei Windows mit den CSIDL). Es kommt aber bei beiden Varianten der richtige string zurück:
Delphi-Quellcode:
var
FileMan : NSFileManager;
URL : NSUrl;
Error : NSError;
begin
FileMan := TNSFileManager.Create;
URL := FileMan.URLForDirectory(NSApplicationSupportDirectory, NSUserDomainMask,
nil, False, @Error);
if not Assigned(Error)
then
result :=
URL.path.UTF8String;