Форум: "WinAPI";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Внизнесколько FileDescriptor в FileGroupDescriptor Найти похожие ветки
← →
kami © (2005-06-03 21:02) [0]Собственно нужно для того, чтобы по Drag & Drop передавать несколько файлов, сам вопрос возник в продолжение ветки http://delphimaster.net/view/1-1117317253/ Вот хоть убейте, не пойму, как в массив [0..0] of TFileDesciptor можно засунуть больше одного описания файла. Кто знает, подскажите :)
← →
xShadow © (2005-06-03 21:33) [1]Dynamic arrays F1
← →
kami © (2005-06-03 21:56) [2]Почитал F1, не знаю, может у меня после масштабных изучений DragDrop-интерфейсов по MSDN (и n-го количества принятого по поводу решенной задачи пива) голова не соображает, но
Out-of-range indexes are not reported at compile time
- цитата из хелпа.{ShlObj.Pas}
_FILEGROUPDESCRIPTORA = record
cItems: UINT;
fgd: array[0..0] of TFileDescriptor; // - объявлен как статический массив
end;
Попытка обращения к <for example> 10 элементу ведет к ошибке на этапе компиляции :(
← →
xShadow © (2005-06-03 22:54) [3]Что то одни противоречия к сожелению нету у меня под рукой D5 только D7 и эти конструкции, в нём, прокатывают на ура.
← →
Игорь Шевченко © (2005-06-03 23:17) [4]kami © (03.06.05 21:56) [2]
Я бы объявил по-другому:
_FILEGROUPDESCRIPTORA = record
cItems: UINT;
fgd: array[0..255] of TFileDescriptor;
end;
_PFILEGROUPDESCRIPTORA = ^_FILEGROUPDESCRIPTORA;
При вызове же указатель приходит, поэтому, если реально в нем больше одного элемента, то обращаться удобно, разыменовав этот указатель.
P: _PFILEGROUPDESCRIPTORA;
....
P^.fgd[1].dwFlags ...
Объявление, похоже, перекочевало прямой трансляцией из C
typedef struct _FILEGROUPDESCRIPTOR {
UINT cItems;
FILEDESCRIPTOR fgd[1];
} FILEGROUPDESCRIPTOR, *LPFILEGROUPDESCRIPTOR;
, где размер массива, равный единице, не мешает обращаться к нулевому, первому, второму и т.п. элементам.
xShadow © (03.06.05 21:33) [1]
> Dynamic arrays F1
Мимо кассы.
← →
kami © (2005-06-04 00:07) [5]2 [4] Игорь Шевченко © (03.06.05 23:17)
Спасибо, попробую переобъявить в модуле это дело :)
Если я что-нибудь в чем-нибудь понимаю, то [(с) Винни-Пух] :
элементы массива не будут перекрываться, т.к. TFileDescriptor тоже не содержит динамических элементов.
А имеет ли значение количество элементов в массиве fgd? Или действительно резервируй память хоть до Max(cItems)=MaxLongWord ?
← →
Игорь Шевченко © (2005-06-06 12:18) [6]kami © (04.06.05 00:07) [5]
> А имеет ли значение количество элементов в массиве fgd?
> Или действительно резервируй память хоть до Max(cItems)=MaxLongWord
> ?
Не имеет до тех пор, пока не наткнешься на ограничения компилятора. Ты же работаешь с указателем на эту структуру, а ее размер определяется количеством элементов, указанных в первом слове.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c