Page 1 of 1
Forum

Welcome to the Tweaking4All community forums!
When participating, please keep the Forum Rules in mind!

Topics for particular software or systems: Start your topic link with the name of the application or system.
For example “MacOS X – Your question“, or “MS Word – Your Tip or Trick“.

Please note that switching to another language when reading a post will not work!





Share:
Notifications
Clear all

Lazarus - MacOS - DiskArbitration with callbacks on disk updates in Pascal  

  RSS

Hans
 Hans
(@hans)
Prominent Member Admin
Joined: 7 years ago
Posts: 822
February 16, 2019 12:51 AM  

Since this took me a lot of time and work to figure out (thanks to the guys in the Lazarus forum as well, without their help I would have not gotten this to work), I figured; post it in the forum, maybe others are interested as well.

What this little demo project does is register functions of my application with MacOS, so that when a disk appears, disappears, or changes, my application gets notified by the OS.
For this I have used what Apple calls "DiskArbitration". I've included the required units for that (diskarbitration and dissenter).

The demo also shows how to read a CFArrayRef and how to convert a CFStringRef to a Pascal string;

function CFStringToPascalString(theCFStringRef: CFTypeRef):string;
var FBuf : array[0..512] of Char;
begin
  if theCFStringRef<>nil then
    begin
      FillChar(FBuf, SizeOf(FBuf), 0);
      CFStringGetPascalString(theCFStringRef,@FBuf[0],SizeOf(FBuf),CFStringGetSystemEncoding);
      Result := trim(StrPas(PChar(@FBuf[1]))); // skip 1st char, it's a strange 1st char causing crashes
    end
  else
    Result:='';
end;           

I hope it is to use for one or the other Lazarus Pascal user that works under MacOS.


ReplyQuote
Share: