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

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

Как правильно копировать динамические масивы?


Alek_1 ©   (2004-11-09 01:22:00) 

SetLength(Viborka.m_raion,Length(m_sp_raion_sel));
Viborka.m_raion:=Copy(m_sp_raion_sel[0],1,Length(m_sp_raion_sel));

выдает ошибку (, несоответствие типов.
и тот и другой масив типа
array of string;


Defunct   (2004-11-10 06:44:00) [1]

TUser ©   (09.11.04 09:48) [8]
> Это медленнее, чем копирование блока памяти сразу.

IMHO те же грабли вид сбоку

Массивы выровняны, что
Rep MovsD, (CopyMemory)

что (копирование циклом)
L1:
Mov EAx, [Edx]
Mov [EBx], EAx
Sub ECx, 4
Jns L1

По скорости практически одно и тоже.
IMHO просто копирование в цикле имеет, как бы это сказать "более Паскалевский вид", прозрачнее для понимания.


Германн   (2004-11-10 05:28:00) [2]

Кажись, у "модератора" тогда что-то болело. Скорее всего болели зубы! Мои соболезнования!
И искренне желая вышеупомянутому скорейшего избавления от вышеназванного, стремлюсь лишь восстановить оригинальную цитату из "Золотого теленка":
 "Прочтя в черноморской вечерке объявление: "Сд. пр. ком. в. уд. в. н. м. од. ин. хол.", и мигом сообразив, что объявление это означает - "Сдается прекрасная комната со всеми удобствами и видом на море одинокому интеллигентному холостяку", Остап подумал: "Сейчас я, кажется, холост.  Еще недавно старгородский загс прислал мне извещение... и т.д.

А TUser ©   (09.11.04 09:48) [8] все понял правильно. И с юмором.
Но неверно процитировал оригинал.


TUser   (2004-11-09 09:48:00) [3]


> Я бы сделал обычный цикл.

Это медленнее, чем копирование блока памяти сразу. Я делаю через CopyMemory.

> че на скоращал???

'сд.пр.к.с.вс.уд.и.в.на м.од.инт.хол' - прочитав это и мигом сообразив, что сие означает 'Сдается прекрасная комната со всеми удобствами и видом на море одинокому интеллегентному холостяку', Остап подумал: 'Сейчас я кажется холост'
(C)


Германн   (2004-11-09 03:59:00) [4]

Удалено модератором


Stexen   (2004-11-09 03:53:00) [5]

Удалено модератором


Германн   (2004-11-09 03:52:00) [6]

Удалено модератором


Stexen   (2004-11-09 03:42:00) [7]

Удалено модератором


Германн   (2004-11-09 03:33:00) [8]

А чем плоха старая, добрая Move?


Defunct   (2004-11-09 03:26:00) [9]

стремно как-то.

Я бы сделал обычный цикл.

SetLength( Array2, Length( Array2 ) );

for i:=0 to Length(Array1)-1 do Array2[i] := Array1[i];


GuAV   (2004-11-09 01:33:00) [10]

Alek_1   (09.11.04 1:22)
SetLength(Viborka.m_raion,Length(m_sp_raion_sel));
Viborka.m_raion:=Copy(m_sp_raion_sel[0],1,Length(m_sp_raion_sel));


Вместо всего этого:
Viborka.m_raion:=Copy(m_sp_raion_sel);


Наверх

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