Главная страница
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.021 c
14-97038
Вадим
2003-01-13 02:13
2003.01.30
Кино


1-96669
EXE
2003-01-21 15:46
2003.01.30
Подскажите пожалуйста, как выровнять текст в TStringGride...


1-96737
alextov
2003-01-21 16:14
2003.01.30
Как отформатировать таблицу в Word e так чтоб она была посередине


3-96609
Roma111
2003-01-10 11:08
2003.01.30
Выделить год


1-96817
Alexsys
2003-01-20 18:52
2003.01.30
Тащим файл на иконку - итог - приложение с открытым файлом?