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

Вниз

array   Найти похожие ветки 

 
MECHANIC ©   (2003-01-19 15:37) [0]

И вопрос, соответственно, такой: для чего нужно такое описание и с чем его едят.

tagEXTLOGPEN = packed record
elpPenStyle: DWORD;
elpWidth: DWORD;
elpBrushStyle: UINT;
elpColor: COLORREF;
elpHatch: Longint;
elpNumEntries: DWORD;
elpStyleEntry: array[0..0] of DWORD;
end;


 
asmith   (2003-01-19 17:30) [1]

array[0..0] of DWORD используется для описания массива переменной длины. В данном случае это описание стиля пера: первый элемент массива дает длину первого штриха, второй - длину первого зазора и так далее.


 
MECHANIC ©   (2003-01-19 22:25) [2]

Спасибо, asmith, но как присвоить какое-то значение хотя бы второму элементу массива - elpStyleEntry[1]?


 
MECHANIC ©   (2003-01-19 22:51) [3]

Однако, разница между динамическим массивом, массивом переменной длины и массивом.. почему-то от меня ускользает.
Есть ли разница в представлении этих типов в памяти?

1) array[0..0] of DWORD"!
2) array[0..1] of DWORD
3) array of DWORD

1"!) Этому массиву невозможно присвоить [1], невозможно присвоить значения другого массива фиксировнной длины (array[0..1] of DWORD), невозможно указать на него через пойнтер, что с ним вообще можно делать?! Что за массив такой..


 
Alex Konshin   (2003-01-20 01:47) [4]

???
Какие проблемы-то?

type PDWORD = ^DWORD;
var p :PDWORD;
p := @tag.eplStyleEntry;



{$RANGECHECKS OFF}
var i : Integer;
a : Array [0..0] of Integer;

i := 1;
a[i] := 1;

3) Array of DWORD - это динамический массив. По поведению и представлению в памяти похож на тип String. Читай Help, там описана разница.

Я вот, например, недоволен, что в Delphi нельзя написать
Array [0..-1] of DWORD, т.е. нельзя определить массив без элементов (кстати, может, все-таки как-то можно?). Иногда очень надо...


 
Дмитрий Баранов ©   (2003-01-20 10:12) [5]


Приведен кусок переведенного кода с С, где разницы между массивом и указателем нет, но Object Pascal позволяет имитировать такое поведение с помощью установки указателя на первый элемент массива и последующим жонглированием с адресами (увеличил адрес, разадресовал - получил следующий элемент), или, действительно, манипуляциями с опциями компилятора :)


 
MECHANIC ©   (2003-01-20 16:29) [6]

Спасибо всем за участие.



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.026 c
3-96592
Jony
2002-12-28 19:36
2003.01.30
Пропала информация


14-97027
vadim0
2003-01-11 06:51
2003.01.30
NT/XP


1-96794
Igit
2003-01-22 20:35
2003.01.30
Low_dword & High_dword


6-96905
TankMan
2002-11-27 03:06
2003.01.30
Как узнать свой IP в сетке а не в Инете....


4-97070
DiHLoS
2002-12-13 11:07
2003.01.30
Иконка зарегистрированного Виндой файла