Главная страница
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.02 c
1-96835
Info
2003-01-21 00:51
2003.01.30
Текст из WebBrowser в Memo


1-96729
Dimitriy.sd
2003-01-22 11:48
2003.01.30
Помогите люди ошибка EInvalidOp, что делать?


3-96571
BlackTiger
2003-01-08 20:48
2003.01.30
Как бы сделать auto-size колонок в DBGrid(Eh)?


8-96885
psv
2002-10-15 15:33
2003.01.30
Движение лоттотрона


8-96893
XPatriot()
2002-10-10 15:39
2003.01.30
Работа с Image ами