![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
несколько FileDescriptor в FileGroupDescriptor [D5, WinXP]
kami © (2005-06-03 21:02:00)Собственно нужно для того, чтобы по Drag & Drop передавать несколько файлов, сам вопрос возник в продолжение ветки http://www.delphimaster.ru/cgi-bin/forum.pl?id=1117317253&n=0Вот хоть убейте, не пойму, как в массив [0.. 0] of TFileDesciptor можно засунуть больше одного описания файла. Кто знает, подскажите :)
Игорь Шевченко (2005-06-06 12:18:00) [1]kami © (04.06.05 00:07) [5]
> А имеет ли значение количество элементов в массиве fgd?
> Или действительно резервируй память хоть до Max(cItems)=MaxLongWord
> ?
Не имеет до тех пор, пока не наткнешься на ограничения компилятора. Ты же работаешь с указателем на эту структуру, а ее размер определяется количеством элементов, указанных в первом слове.
kami (2005-06-04 00:07:00) [2]2 [4] Игорь Шевченко © (03.06.05 23:17)
Спасибо, попробую переобъявить в модуле это дело :)
Если я что-нибудь в чем-нибудь понимаю, то [(с) Винни-Пух] :
элементы массива не будут перекрываться, т.к. TFileDescriptor тоже не содержит динамических элементов.
А имеет ли значение количество элементов в массиве fgd? Или действительно резервируй память хоть до Max(cItems)=MaxLongWord ?
Игорь Шевченко (2005-06-03 23:17:00) [3]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
Мимо кассы.
xShadow (2005-06-03 22:54:00) [4]Что то одни противоречия к сожелению нету у меня под рукой D5 только D7 и эти конструкции, в нём, прокатывают на ура.
kami (2005-06-03 21:56:00) [5]Почитал 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 21:33:00) [6]Dynamic arrays F1