Delphi 10.1 Berlinでロギング(ログの出力)

以前に「Delphi XE5でAndroidアプリケーションのロギング(ログの出力)」でログの出力方法を紹介しました。

現在のバージョンではもっと手軽にできるようになっています。

uses
  FMX.Types;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Log.d('%s', ['ログメッセージです。']);
end;

これだけでログの出力ができます。

Delphi/C++Builder 10.1 Berlin Update2のMac用PAServerをダウンロードするには

docwikiの「Mac でのプラットフォーム アシスタントのインストール」にはリンクがありませんが、
Delphi/C++Builder 10.1 Berlin Update2のMac用PAServerは、
次のURLからダウンロードできました。

Delphi 10.1 Berlin Update2でiOS 10用にユーザーデータのアクセス目的を記述するには

iOS 10から、カメラなどを使用するときには、info.plistに特定のキーと使用目的を記述するようになりました。

Delphi 10.1 Berlin Update2では、プロジェクトオプションのバージョン情報画面で、設定できます。

delphi101belrin_infoplist

位置情報へのアクセス (常に)

  • キー
    NSLocationAlwaysUsageDescription


  • アプリが常にユーザーの位置情報にアクセスする理由

位置情報へのアクセス (使用中のみ)

  • キー
    NSLocationWhenInUseUsageDescription


  • アプリがフォアグラウンドで実行されているときなど、アプリがユーザーの位置情報にアクセスする理由

連絡先へのアクセス

  • キー
    NSContactsUsageDescription


  • アプリがユーザーの連絡先にアクセスする理由

フォトライブラリへのアクセス

  • キー
    NSPhotoLibraryUsageDescription


  • アプリがユーザーの写真ライブラリにアクセスする理由

カメラへのアクセス

  • キー
    NSCameraUsageDescription


  • アプリがデバイスのカメラにアクセスする理由

Delphiのフォーマッタ(コードの整形)でDataMoudleが壊れる

TDataMoudleにはClassGroupプロパティがあります。
このプロパティで、データモジュールがVCL用かFMX用かフレームワークに依存しないかを設定します。

たとえばTTimerコンポーネントはVCL用のVcl.ExtCtrls.TTimerとFMX用のFMX.Types.TTimerがあります。
使用するコンポーネントとClassGroupで設定したフレームワークを一致させる必要があります。

formatter01

オブジェクトインスペクタでClassGroupプロパティを設定すると、ユニットファイルには次のような指令が追加されます。

ClassGroupがFMX.Controls.TControlの場合:

{%CLASSGROUP 'FMX.Controls.TControl'}

フォーマッタのコメントスペースの設定の「{ および (* コメントスペースの設定」は初期値が「内側と外側」になっています。
この設定でコードを整形すると、ClassGroupプロパティによって追加された指令が次のようになります。

{ %CLASSGROUP 'FMX.Controls.TControl' }

「{」「}」の間に空白が追加されました。

このように空白が追加されると、ClassGroupプロパティの値は未設定の状態になります。

ClassGroupプロパティの値が設定されていない状態になると、コンポーネントとフレームワークに不一致が生じます。
その結果、IDEでデータモジュールを読み込むときにエラーが発生します。

エラーが発生した場合は、ClassGroupプロパティの指令を修正すれば、元の状態に戻ります。