-
Есть некая структура данных:
type
MyStruct = record
param1: Cardinal;
param2: LongWord;
param3: array of Char;
param4: LongWord;
end;
При передаче этой структуры в процедуру: CalcCRC32(p: pointer; nbyte: WORD; var CRCvalue: LongInt); возникает один момент, нет данных динамического массива. Как правильно сформировать данные для передачи в процедуру? Думал в сторону промежуточного массива, в который бы самостоятельно прописал все данные из структуры, после чего передать уже для расчета.
-
откуда вообще взялось понятие "данные динамического массива"?
var s: MyStruct; value: LongInt; ... CalcCRC32(@S, sizeof(s), value)
-
Ну там же указатель. По частям CRC считать можно? Если да:
type
MyStruct = packed record
param1: Cardinal;
param2: LongWord;
param4: LongWord;
param3: array of Char;
end;
CalcCRC32(@S, sizeof(s)-sizeof(Pointer), value);
Len := Length(s.param3);
If Len > 0 then CalcCRC32(@S.param3[0], Len * sizeof(Char), value);
-
> При передаче этой структуры в процедуру: > 1 > > CalcCRC32(p: pointer; nbyte: WORD; var CRCvalue: LongInt); >
А зачем именно в эту процедуру передавать именно эту структуру?
-
Sapersky (11.03.13 00:04) [2]
Нет, так не получается... не совпадает полученное значение с ожиданием. Надо копать как сформировать буфер (массив) из этих данных...
-
Германн © (11.03.13 01:01) [3]
> При передаче этой структуры в процедуру: > 1 > > CalcCRC32(p: pointer; nbyte: WORD; var CRCvalue: LongInt); >
А зачем именно в эту процедуру передавать именно эту структуру?
Проверить достоверность полученных данных.
-
Формировать массив или считать в два приёма - по идее должно быть без разницы, если, конечно, CRCvalue в начале CalcCRC32 не сбрасывается.
-
Sapersky (11.03.13 03:03) [6] Формировать массив или считать в два приёма - по идее должно быть без разницы, если, конечно, CRCvalue в начале CalcCRC32 не сбрасывается.
Попробую еще раз, может тупанул где то...
Решение найдено, вернее найдены исходники того как данные сохраняются, там не динамический, а статический массив 512 элементов, сохраняется только значимая (<>#0). В записке было не верно, случайно может быть.
Спасибо за помощь.
|