私は一日中グーグルで検索しており、FireMonkey、apptethering、Delphi XE6 の同じ 10 の例を見続けています。XE6 とアプリ テザリングは初めてです。私が得ることができるどんな助けにも感謝します。
私の話私は Delphi XE6 を持っています。Android プラットフォーム用のテザー FireMonkey アプリケーションを作成しようとしています。サーバー上で実行する VCL アプリケーションがあります。多くの Android タブレットがサーバー アプリケーションに同時に接続します。
ユーザーがタブレットのボタンを押すと、TTetheringAppProfile の SendString メソッドを使用して一意の ID がサーバーに送信されます。サーバーには TetherProfileResourceReceived イベントがあり、AResource.Value から一意の ID を取得します。サーバーはデータベースにクエリを実行し、レコードを取得します。これはすべて良いです。
ここで、リクエストを送信したのと同じプロファイルにレコードを送り返す必要があります。私が見たすべての例では、アイテム インデックスを使用して、送信文字列 (TetherProfile.Resources.Items[0].Value) の TTetheringProfileInfo を取得しています。複数の接続があるため、インデックスに頼ることはできないと思います。要求しているプロファイルに応答文字列をすぐに送り返したいです。
私の失敗した試み
procedure TfrmTabletServer.POSTetherProfileResourceReceived(
const Sender: TObject; const AResource: TRemoteResource);
var
RequestID : Integer;
SendRec := String;
Requester : String;
begin
Requester := AResource.Name;
if AResource.ResType = TRemoteResourceType.Data then begin
RequestID := AResource.Value.AsInteger;
SendRec := GetRecord(RequestID);
//this works but I cant rely on index name due to multiple connections
//POSTetherProfile.Resources.Items[0].Value = SendRec;
//I would prefer to use SendString to keep the requests temporary
//I can't figure out how to get the TTetheringProfileInfo from the AResource
POSTetherProfile.SendString('TTetheringProfileInfo from AResource?','Response ' + ID.AsString, SendRec);
end;