Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
4-1118395724
!Trinix
2005-06-10 13:28
2005.08.07
Форма


8-1112552568
seregka
2005-04-03 22:22
2005.08.07
MP3 tags


4-1118237156
KonstantinXaker(KX)
2005-06-08 17:25
2005.08.07
Найти значение в строке и заменить его


14-1121353595
Сибиряк
2005-07-14 19:06
2005.08.07
Портировать с РНР на Delphi.


1-1121874412
Igorek
2005-07-20 19:46
2005.08.07
Кодировка файла для чтения/записи из ActiveX обьекта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский