Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

Динамический 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;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.043 c
8-1099763404
focor
2004-11-06 20:50
2005.02.20
Multyinstal


1-1107427508
Артем К.
2005-02-03 13:45
2005.02.20
ПРОБЛЕМА. Делаю компонент PageControl (наследник TCustomControl)


14-1107100401
AG.Smit
2005-01-30 18:53
2005.02.20
Помогите, база данных не работает у тех, у кого нет Delphi


4-1104488042
Vaitek
2004-12-31 13:14
2005.02.20
Ярлычек


9-1100346095
Zak3D[@Tm]
2004-11-13 14:41
2005.02.20
Direct3D - Проблема потерянных устройств.





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