Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизДинамический array of record в памяти как располагается ? Найти похожие ветки
← →
Аккум (2005-02-08 06:56) [0]Последовательно рекорд за рекордом, или как попало ?
← →
Skier © (2005-02-08 06:57) [1]Последовательно
← →
Аккум (2005-02-08 07:19) [2]
type
THLight2 = record
ID : array [0.. 3] of Char;
Size : Integer;
Name : array [0..19] of Char;
end;
var
HL3 : array of THLight2;
Я могу сделать ? :SetLength(HL3, 10);
Move(AAl.HR3, HR3, SizeOf(THLight2)*10);
← →
MBo © (2005-02-08 08:12) [3]что за переменные в Move используются, непонятно ;)
Move записей в динамическом массиве делать можно, только с учетом того, нет ли в записях динамических полей (строк, дин. массивов) и применением правильного синтаксиса.
← →
Чапаев © (2005-02-08 09:41) [4]Хм... Насколько я знаю, в таком случае надо указывать не Move(A,...), а Move(A[0],...).
← →
icWasya © (2005-02-08 09:49) [5]И ещё.
В случае со статическими массивами, например
Var
HL2 : Array[0..9] of THLight2;
для Move нет разницы между HL2 и HL2[0] и оператор
Move(Source, HR2, SizeOf(THLight2)*10); // 1
действительно перепишет Source в массив HR2. Тоже самое сделает оператор
Move(Source, HR2[0], SizeOf(THLight2)*10); // 2
А в случае с динамическим массивом
Var
HL3 : Array of THLight2;
...
SetLength(HL3, 10);
операторы
Move(Source, HR3, SizeOf(THLight2)*10); // 3
и
Move(Source, HR3[0], SizeOf(THLight2)*10); // 4
сделают совсем разные вещи. Оператор 4 сделает то, чего Вы от него ожидали, а оператор 3 в лучшем случае приведёт к Access violation. Поэтому общая рекомендация - в процедуры, требуюцие бестиповые переменные, массивы (и строки) лучше передавать в виде 2 и 4.
← →
Аккум (2005-02-09 01:17) [6]
> Чапаев © (08.02.05 09:41) [4]
> Хм... Насколько я знаю, в таком случае надо указывать не
> Move(A,...), а Move(A[0],...).
Правильно.
> icWasya © (08.02.05 09:49) [5]
Я просто когда код обрезал, чтобы сюда вставить, слегка напутал.
Кстати, Move - это самый быстрый способ для копирования в данном случае ? Или есть что-нибудь, что работает ещё быстрее ?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c