Текущий архив: 2006.10.08;
Скачать: CL | DM;
Вниздинамические массивы Найти похожие ветки
← →
непонимающий (2006-09-18 12:04) [0]возникла не большое затруднение, помогите пожалуйста разрешить его:
есть массив
type
TOTPR = packed record
otpr_massiv: array of Byte;
end;
POTPR=^TOTPR;
и есть переменнаяf: integer;
и вот нужно в это массив записать значение этой переменнойa: POTPR;
.............
a^.otpr_massiv[20]=f;
к сожалению он записывает туда только 1 байт, вы не подскажете как туда записать все 4 байта?
← →
Zeqfreed © (2006-09-18 12:07) [1]> к сожалению он записывает туда только 1 байт
Откуда такая уверенность? Память под массив-то выделяешь хоть?
А вообще, зачем такие извращения?
← →
Eraser © (2006-09-18 12:07) [2]> [0] непонимающий (18.09.06 12:04)
> TOTPR = packed record
> otpr_massiv: array of Byte;
принципиальная ошибка, здесь следует использовать статический массив, либо вообще отказаться от использования структуры.
← →
Palladin © (2006-09-18 12:12) [3]ну вообще конструкция странноватая и безсмысленная...
размер записи у тебя равен 4 байтам, т.к. идентификатор optr_massiv - это указатель, соответственно packed не имеет никакого смысла, чем не устраивает просто объявление TOTPR=Array of Byte ?
это раз, два: конечно он будет записывать туда один байт, бо таков тип элемента массива, хочешь записать Integer целиком придется побайтно назначать либо использовать Move
a.
With LongRec(f) Do
Begin
a[20]:=Bytes[0];
a[21]:=Bytes[1];
a[22]:=Bytes[2];
a[23]:=Bytes[3];
End
b.
Move(f,a[20],4)
← →
непонимающий (2006-09-18 12:26) [4]
> Palladin
спасибо, сейчас поправлю и попробую...
← →
Anatoly Podgoretsky © (2006-09-18 15:08) [5]Do not apply the dereference operator (^) to a dynamic-array variable or pass it to the New or Dispose procedure.
Страницы: 1 вся ветка
Текущий архив: 2006.10.08;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.055 c