Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Длина массива записей -- как??? [D7, WinXP]


Страницы:   1 2 3 4

cvg ©   (2004-08-04 16:38:00) 

Hi, masters! Как можно найти длину массива записей (или как оно там по-умному называется?) Структурка такая:

type MyRec =
record
 name:string[10];
 ar0:integer;
 ar1:double;
 ar2:double;
 ar3:double;
 ar4:double;
 ar5:double;
end;
MyArr = array of MyRec;

Length(A) не работает... Ж:(((


begin...end   (2004-08-04 19:47:00) [1]


> [63] cvg   (04.08.04 19:15)


> Я имел ввиду: суммарное количество записей во всех структурах массива.

Товарищ!
То, что ты называешь структурами, называется записями.
А то, что ты называешь записями, называется полями записи.


GrayFace   (2004-08-04 19:40:00) [2]

Можно отслеживать и без переменной.
pint(integer(A)-4)^нормально выдает длину, если массив не нулевой (когда мышь на конец подведешь). Я, кажется, понял, почему так - length - это функция, а не значение в памяти. Если a=nil, то length возвращает 0 иначе то, что я написал.

Digitman ©   (04.08.04 18:45) [54]
> отладчик все делает правильно

Не все. В Delphi много неправильностей, о которых говорить бессмысленно, но считать их правильными - глупо.

CyberStorm   (04.08.04 19:10) [62]
И у меня.


cvg   (2004-08-04 19:15:00) [3]

Да ладно тебе к словам придираться, Кибершторм! Ну ладно, в книжке вот это дело названо "массив структур". Я имел ввиду: суммарное количество записей во всех структурах массива. Вот.


CyberStorm   (2004-08-04 19:10:00) [4]

CVG
ты че написал, ум за разум заходит от этой формулировки:
"суммарное количество записей во всех записяхмассива"


CyberStorm   (2004-08-04 19:07:00) [5]

Digitman с каких щей он не покажет объем памяти,
<размер одной записи>*<количество записей в динамическом массиве> - как раз и покажет.
High(A) верхняя граница динамического массива+1 т.к. динамические массивы включают в себя нулевой элемент т.е. размерность 0..N
В Delphi записи по умоланию упакованные т.е. поля записи не выравниваются по опции Align
Общее количество элементов равно High(A)+1
Блин, я с динамическими массивами и указателями работаю ХЗ скоко лет 8)
PS может конечно вопрос не понял, не люблю длинных веток


cvg   (2004-08-04 19:02:00) [6]

Я имею ввиду: суммарное кол-во записей во всех рЕкордах массива...


Digitman   (2004-08-04 18:55:00) [7]


> cvg   (04.08.04 18:52) [58]


не покажет
общее кол-во эл-тов покажет именно Length()


cvg   (2004-08-04 18:52:00) [8]

Но общее-то кол-во эл-тов покажет же?


cvg   (2004-08-04 18:50:00) [9]

А насчет отладчика не уверен. Он призван жисть мне облегчить, а не непонятки порождать.


Digitman   (2004-08-04 18:49:00) [10]

а CyberStorm вообще непонятно что хотел этим кодом показать ..полного объема памяти, занимаемого дин.массивом А этот код все равно не покажет


cvg   (2004-08-04 18:46:00) [11]

Это я Киберсторму. Пока отвечал, твоя мессага появилась.


Digitman   (2004-08-04 18:45:00) [12]


> cvg   (04.08.04 18:40) [52]


> Обидно только слегка, что отладчик неполноценный


сейчас ты уподобляешься некоему Куртевичу, разведшему похожий флейм насчет иных якобы "неполноценностей" Делфи ... не надо) ... не стоит того ... отладчик все делает правильно


Digitman   (2004-08-04 18:41:00) [13]


> cvg   (04.08.04 18:38) [51]
> Это же будет кол-во эл-тов во всех запасях


это ты по какому поводу ?


cvg   (2004-08-04 18:40:00) [14]

ОК, Digitman. Обидно только слегка, что отладчик неполноценный. И где-то я уже с такой фигою в нем втречался...


cvg   (2004-08-04 18:38:00) [15]

Это же будет кол-во эл-тов во всех запасях, если я правильно понимаю... А оно мне надо?


Digitman   (2004-08-04 18:36:00) [16]


> не стоит


когда "не стоит", тогда одно спасение - явное обращение к идентификатору, например, так как ты сделал - M:= Length(A)


CyberStorm   (2004-08-04 18:35:00) [17]

SizeOf(MyRec)*(High(A)+1)


cvg   (2004-08-04 18:24:00) [18]

А там крыжик и так не стоит!


begin...end   (2004-08-04 18:20:00) [19]

Project -> Options -> Compiler -> Code generation -> Optimization


cvg   (2004-08-04 18:17:00) [20]

Это .cfg? А которая там? А то в книге Бобровского "Delphi 7. Учебный курс" алфавитный указатель только по компонентам... :((


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо