Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.035 c
4-1104796344
Донской
2005-01-04 02:52
2005.02.20
Работа службы под winnt 4.0


9-1100950280
Bryke
2004-11-20 14:31
2005.02.20
Индексация


3-1106153549
_alien_
2005-01-19 19:52
2005.02.20
Как в DBGrid добавить SpinEdit?


6-1102339475
Новенький
2004-12-06 16:24
2005.02.20
Аттач..


1-1107333696
GreySerg
2005-02-02 11:41
2005.02.20
Как задать Title приложения при Group similar taskbar buttons ?





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