Как привести массив к указателю и обратно в Delphi?

У меня есть нарисованный владельцем комбобокс, который отображает строки в колонках. Процедура рисования может быть общей для всех комбобоксов, если я могу каким-то образом передать спецификации столбцов в событие OnDrawItem. Естественный способ сделать это - передать массив ширины колонок в свойстве ComboBox.Tag, а затем вернуть его в массив.

Когда я определяю массив колонок как:

const arrWidth :array[1..4] of integer = (100,100,100,70);

и устанавливаю свойство Tag в:

ComboBox.Tag := integer(@arrWidth);

и затем в событии OnDrawItem привожу его обратно в массив:

Widths :array of integer;
Widths := pointer(ComboBox.Tag);

Я могу видеть элементы массива нормально, но массив не знает своей длины. Он кажется намного длиннее со всевозможными случайными значениями.

Я пробовал использовать динамический массив, но тогда я даже не получаю нужных значений столбцов.

10
задан menjaraz 17 December 2011 в 05:33
поделиться