Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.07;
Скачать: CL | DM;

Вниз

несколько 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 вся ветка

Текущий архив: 2005.08.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.042 c
14-1121171225
Bless
2005-07-12 16:27
2005.08.07
Как передать большой объем информации через Инет?


14-1121326798
panov
2005-07-14 11:39
2005.08.07
Опросы.


14-1121674605
начинающий10
2005-07-18 12:16
2005.08.07
Конопка - где взять?


3-1119858508
Mamed
2005-06-27 11:48
2005.08.07
Report and Unicode


14-1121664326
Ega23
2005-07-18 09:25
2005.08.07
С днем рождения! 18 июдя