Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
1-96835
Info
2003-01-21 00:51
2003.01.30
Текст из WebBrowser в Memo


1-96726
Эли
2003-01-22 12:16
2003.01.30
exe, который удаляет сам себя


4-97102
GoldenFILL
2002-12-14 13:28
2003.01.30
Конвертация double и int64 в string


3-96627
yurij
2003-01-14 00:15
2003.01.30
Проблема с занесением данных таблицу


14-96993
Vox
2003-01-12 15:19
2003.01.30
ОС на паскале!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский