60938


現在、RAD Studio 10.3でプログラミングを行っています。

Indy9のTCPサーバのコンポーネントを使用したソースコードを見たのですが、  
`Athread->Stopped` と記述されたプログラムは、Indy10の場合どのように記述すれば同様の値を取得できますか？

ちなみに、私が見たソースコードはこのようなものでした。

[code]

    //Indy9のServerConnectメソッドのソース内容（Borland C++ builder 6でビルド）
    *void __fastcall TfrmMain::ServerConnect(TIdPeerThread *AThread)
    {
    ---------（中略）---------
    
        if( AThread->Stopped || AThread->Terminated ) return;
    
    ---------（中略）---------
    }
    
[/code]

**（途中経過）**

[code]

    //RAD Studio 10.3で、Indy10コンポーネントの場合のServerConnectメソッド
    void __fastcall TfrmMain::ServerConnect(TIdContext *AContext)
    {
    
    }
    
[/code]

RAD studio10.3.3では、Indy10のコンポーネントの場合、ServerConnectメソッドの引数部分は`(TIdContext
*AContext)` となっています。

Indy10のドキュメントで”Stopped”というキーワードで検索してみたところ、"TIdThread"というところに”Stopped”というのがあるようなのですが、このメソッド内のAContextからこのStoppedの値を取り出すことは可能でしょうか？


CC BY-SA 4.0
2019-11-28T09:00:07.473
60915
2019-11-29T04:35:55.310
2019-11-29T04:35:55.310
3060
35993
question
rad-studio
Indy9コンポーネントの”Athread->Stopped”の値はIndy10ではどうやって記述すればいい？


[本家の似た質問](https://stackoverflow.com/questions/48566643/tidpeerthread-
returnvalue-not-indy10)の回答によるとTIdContext.Yarn を経由する事でThreadにアクセス出来るようですので  
以下ようなコードになるのでは無いでしょうか？  
コンパイルするにはIdSchedulerOfThread.hppのインクルードが必要かもしれません。

[code]

    void __fastcall TfrmMain::ServerConnect(TIdContext *AContext)
    {
    ---------（中略）---------
    
        if( TIdYarnOfThread(AContext.Yarn)->Thread->Stopped 
           || TIdYarnOfThread(AContext.Yarn)->Thread->Terminated ) return;
    
    ---------（中略）---------
    }
    
[/code]


CC BY-SA 4.0
2019-11-29T04:09:34.973
60938
2019-11-29T04:09:34.973
3524
60915
answer