Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



Deel:
Meldingen
Alles wissen

[Opgelost] Lazarus - MacOS X - Hoe vindt je het DropBox pad

1 Berichten
1 Gebruikers
0 Reactions
1,265 Bekeken
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 12 jaar geleden
Berichten: 2864
Topic starter  

Wanneer je Dropbox wilt gebruiken in jouw Lazarus applicatie op een Mac, dan moet je natuurlijk wel eerst het pad weten naar de DropBox directory.
Dropbox heeft dit gelukkig gedocumenteerd (zie deze link), en er is een JSON bestand beschikbaar in de gebruikers home directory waar dit in staat:

~/.dropbox/info.json

Het bestand ziet er ongeveer zo uit (uiteraard, als je alleen een persoonlijk account of een business account hebt, dan staat de andere info er natuurlijk niet in):

{
    "business": {
        "host": 123456789,
        "path": "/Users/<USERNAME>/Dropbox (<BUSINESS_NAME>)"
    },
    "personal": {
        "host": 123456789,
        "path": "/Users/<USERNAME>/Dropbox (Personal)"
    }
}
  • business/personal: Soort account.
  • host: Een unieke identifier welke gebruiker en computer uniek identificeert.
  • path: Pad naar de Dropbox folder.

We hebben een JSON parser nodig om deze DropBox configuratie te lezen (zie Lazarus Wiki).

Een simpel voorbeeld om het DropBox pad te lezen:

unit Unit1;
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, fpjson, jsonparser;
type
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
   jData : TJSONData;
   jObject : TJSONObject;
   jArray : TJSONArray;
   jText : TStringList;
   DropBoxPath : string;
begin
  if FileExists(ExpandFileName('~/.dropbox/info.json')) then
    begin
      jText:=TStringList.Create;
      jText.LoadFromFile(ExpandFileName('~/.dropbox/info.json'));
      jData := GetJSON(jText.Text);
      jObject := TJSONObject(jData);
      DropBoxPath:='';
      try
        DropBoxPath:=jData.FindPath('personal.path').AsString;
      except
        // Do nothing
      end;
      if DropBoxPath='' then
        try
        DropBoxPath:=jData.FindPath('business.path').AsString;
      except
        // Do Nothing
      end;
      if DropBoxPath<>'' then
        Label1.Caption:=DropBoxPath;
      else
        Label1.Caption:='Pad niet gevonden';
      jText.Free;
      jObject.Free;
      jData.Free;
    end;
end;
end.

   
BeantwoordenCiteren
Deel: