

Indy9で書かれたコードの

[code]

    void __fastcall TfrmMain::ServerConnect(TIdPeerThread *AThread)
    {
         BKUK_PACKET Pkt;
    ----------(中略)---------------------------------------
    
    AThread->Connection->ReadBuffer((BYTE *)&Pkt,sizeof(BKUK_PACKET));
    
    ----------(中略)---------------------------------------
    }
    
[/code]

ReadBufferという名前の機能はIndy10では見当たらないのですが、同等の機能はありますでしょうか？

コードではPktのポインターのメモリ位置に受信したBKUK_PACKETのデータ内容を移動させていると思われます。

BKUK_PACKET(仮名)というのはこのような感じの1200バイト程度のデータ内容です。

[code]

    typedef struct _BKUK_PACKET_
    {
        BYTE head[4];
        WORD PayLoad;
        WORD Length;
        BYTE Data[1200];
        WORD Ver;
        BYTE tail[2];
    }BKUK_PACKET;
    
[/code]

以前Indyを使った時に、データ受信などで

[code]

    AnsiString rcvdStr;
    
    
        rcvdStr = AContext->Connection->IOHandler->ReadLn(IndyTextEncoding(932));
    
[/code]

このような感じの”ReadLn()”データを受信したことはあるのですが、今回の場合でもReadLn()は使用できますでしょうか？

**（途中経過）**

[code]

    Context->Connection->IOHandler->ReadBytes((BYTE *)&Pkt,sizeof(BKUK_PACKET))
    
[/code]

ReadBytesという機能を見つけて、上記のようにプログラムしてみたのですが、次のようなエラーが出ます。

> [bcc32c エラー] Main.cpp(530): non-const lvalue reference to type
> 'Idglobal::TIdBytes' (aka 'DynamicArray') cannot bind to a temporary of type
> 'BYTE *' (aka 'unsigned char *')  
>  IdIOHandler.hpp(235): passing argument to parameter 'VBuffer' here

このようなエラーが出てくるのですが、対策方法などありますでしょうか？


CC BY-SA 4.0
2019-11-30T12:57:18.820
60970
2019-12-02T04:57:51.247
2019-12-02T04:57:51.247
2238
35993
question
delphi
Indy9のTIdTCPConnection.ReadBufferと同等の機能はありますか？


お世話になっております。  
こちらのサイトで、とりあえず解決できましたので報告させて頂きます。

Answer: Is there an indy9 function called ReadBuffer in Indy10?
<https://stackoverflow.com/a/59126191/12281072?stw=2>


CC BY-SA 4.0
2019-12-02T03:03:48.730
61001
2019-12-02T03:03:48.730
35993
60970
answer