我正在使用二進制文件結構。讀取數據的代碼示例是C語言,我需要在Delphi中讀取它。我急於補充,我沒有C編程經驗。將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] ];
將返回第一偏移陣列項目從價值由HdrPtr指向的HeaderType結構?那麼相當於HdrPtr^.Offset[0]
?
然後&RcvBuff [ HdrPtr->Offset[0] ];
應該返回包含RcvBuff數組項索引的值的內存地址,所以相當於@RecBuff[HdrPtr^.Offset[0]]
?
然後我迷路了(FixLeaderType *)..
。有人可以幫忙解釋一下FldrPtr引用的內容嗎?
謝謝!類型轉換操作是我錯過的那一點。這足以讓我繼續下去。乾杯。 – HMcG 2010-04-27 14:27:24