Я работаю с бинарной файловой структурой.Пример кода для чтения данных написан на C, и мне нужно прочитать его на Delphi.Спешу добавить, что у меня нет опыта программирования на Си.
Учитывая следующее
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] ];
будет возвращать значение первого элемента массива Offset из структуры HeaderType, на которую указывает HdrPtr?Таким образом, эквивалентно HdrPtr^.Offset[0]
?
Тогда &RcvBuff [ HdrPtr->Offset[0] ];
должен возвращать адрес памяти, содержащий индексированное значение элемента массива RcvBuff, поэтому эквивалентно @RecBuff[HdrPtr^.Offset[0]]
?
Тогда я теряюсьс (FixLeaderType *)..
.Может кто-нибудь помочь объяснить, на что конкретно ссылается FldrPtr?