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

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

Длина массива в байтах. [D7, WinXP]


Andy BitOff ©   (2006-03-23 01:26:00) 

Как узнать длину массива в байтах? Структура массива следующая:

type
 TSInfo = record
   sRect: TRect;
   Square: integer;
 end;
 TSArr = Array of TSInfo;
...
var
 SArray: array of TSArr;

После всех манипуляций с массивом, хотелось бы узнать сколько памяти он займет.


SergP.   (2006-03-23 11:09:00) [1]

Х/з... Наверное тогда что-то типа:

l:=0;
for i:=0 to high(SArray) do l:=l+length(SArray[i]);
S:=l*sizeof(TSInfo)+length(SArray);


Anatoly Podgoretsky   (2006-03-23 09:31:00) [2]

Массив то двухмерный!


TUser   (2006-03-23 07:39:00) [3]


> MBo ©   (23.03.06 07:25) [4]

Да, конечно. Извините.


MBo   (2006-03-23 07:25:00) [4]

> способ [1] будет давать неверный результат.
Почему это он будет неверный?
Проблемы могут быть только с совместимостью


TUser   (2006-03-23 06:58:00) [5]

В таких случаях лучше использовать packed record. А то при использовании в массиве полей типов byte, boolean, shortint, shortstring и прочих - способ [1] будет давать неверный результат.


Andy BitOff   (2006-03-23 01:38:00) [6]

Спасибо.


Джо   (2006-03-23 01:34:00) [7]

SizeOf(TSInfo)*Length(SArray)


Наверх

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