私はバイナリファイル構造で作業しています。データを読み取るためのコード例はCであり、Delphiで読み取る必要があります。私はCプログラミングの経験がないことを急いで付け加えます。
次のことを考えると
typedef struct {
uchar ID, DataSource;
ushort ChecksumOffset;
uchar Spare, NDataTypes;
ushort Offset [256];
} HeaderType;
...
typedef struct {
ushort ID;
...
ushort DistanceToBin1Middle,TransmitLength;
} FixLeaderType;
...
HeaderType *HdrPtr;
FixLeaderType *FLdrPtr;
unsigned char RcvBuff[8192];
void DecodeBBensemble( void )
{
unsigned short i, *IDptr, ID;
FLdrPtr = (FixLeaderType *)&RcvBuff [ HdrPtr->Offset[0] ];
if (FLdrPtr->NBins > 128)
FLdrPtr->NBins = 32;
...
私がフォローするのが難しいビットはこれです:
FLdrPtr = (FixLeaderType *)&RcvBuff [ HdrPtr->Offset[0] ];
私が理解している[ HdrPtr->Offset[0] ];
ことからすると、HdrPtrが指すHeaderType構造体から最初のOffset配列項目の値を返すのでしょうか。だからHdrPtr^.Offset[0]
?
次に&RcvBuff [ HdrPtr->Offset[0] ];
、インデックスが付けられたRcvBuff配列アイテムの値を含むメモリアドレスを返す必要があります。これは@RecBuff[HdrPtr^.Offset[0]]
?と同等です。
それから私はで迷子になり(FixLeaderType *)..
ます。誰かがFldrPtrによって参照されているものを正確に説明するのを手伝ってもらえますか?