![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Длина массива в байтах. [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)