Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Вниз

А как можно присвоить один типизированный массив другому   Найти похожие ветки 

 
msgipss   (2002-12-26 13:59) [0]

Подскажите пожалуйста, есть ли какая либо команда для загрузки данных из одного динанич. массива в другой, например

b,a:array of type1
.....
как присвоить один массив другому не перебирая и присваивая поэлементно


 
Song   (2002-12-26 14:03) [1]

a:=b ?
В паскале помнится, прокатывало..


 
ZrenBy   (2002-12-26 14:10) [2]

CopyMemory


 
Anatoly Podgoretsky   (2002-12-26 14:15) [3]

ZrenBy © (26.12.02 14:10)
Ну да

type
type1 = array of array of ...



 
icWasya   (2002-12-26 15:55) [4]

a:=system.copy(B,Low(B),Length(B));


 
gsu   (2002-12-26 16:12) [5]

Для статических a:=b - угу, для динамических это присваивание указателей, но не копирование элементов. А вообще copy, хотя она временами ся странно ведет ...


 
msgipss   (2002-12-27 05:06) [6]

что то массив типа
type xxx=record
x1:word;
x2:string;
yyy=array of xxx;
zzz=array of yyy;
var zzz1,zzz2:zzz;
....
zzz1:=system.copy(zzz2,Low(zzz2),Length(zzz2));

не хочет копироваться, 8(


 
Дурак2   (2002-12-27 05:13) [7]

с динамическими массивами работаю только поэлементно.


 
msgipss   (2002-12-27 08:59) [8]

придется по старинке поэлементно, думал может уже есть чего поинтереснее, 8)


 
msgipss   (2002-12-27 08:59) [9]

придется по старинке поэлементно, думал может уже есть чего поинтереснее, 8)
всем спасибо....


 
perov   (2002-12-27 09:15) [10]

для динамических массивов можно залочить (LockArray вродебы) их и system.copy


 
VaS   (2002-12-27 10:19) [11]

У тебя в элементах массива (записях) имеются указатели (дин. массивы). Их тоже надо move-ать. Так что только поэлементно с копированием данных по указателям записей.


 
ИгорЁк   (2002-12-27 10:45) [12]

а если так?

SetLength(zzz2, Length(zzz1)):
Move(zzz1[0], zzz2[0], Length(zzz1)*SizeOF(xxx));


 
shane54   (2002-12-27 11:06) [13]

Всё проще.

type
MyType = array[1..N] of integer;
var
Mas1, Mas2 : MyType;
begin
....
....
Mas1 := Mas2;
end;


Такой вот нехитрой уловкой обходится ограничение с присваиванием массивов.


 
Дурак2   (2002-12-27 11:20) [14]

А мы тут колбасимся - а все так просто ;-)
Может и вечный двигатель сделаешь?


 
shane54   (2002-12-27 11:56) [15]

Ник подходит


 
Севостьянов Игорь   (2002-12-27 11:56) [16]


> shane54 © (27.12.02 11:06)

Действительно какой у него "динамический" массив однако


 
Дурак2   (2002-12-27 12:32) [17]


> shane54 © (27.12.02 11:56)
> Ник подходит

Подходит? - так бери - не жалко.


 
gsu   (2002-12-27 14:02) [18]

>> shane54 © (27.12.02 11:06)
>> Всё проще.

Да, ладно - он нечаянно.


 
les   (2002-12-27 16:30) [19]

В модуле system есть несколько очччень интересних (правда совсем недокументированих функций) (D5):
procedure _DynArrayCopy(a: Pointer; typeInfo: Pointer; var Result: Pointer);
procedure _DynArrayCopyRange(a: Pointer; typeInfo: Pointer; index, count : Integer; var Result: Pointer);
procedure _DynArrayAsg;

procedure _CopyArray;

procedure CopyArray(dest, source, typeInfo: Pointer; cnt: Integer); - ета вообще не импортируется.

typeInfo получаешь через функцию TypeInfo (как ни странно :). Попробуй.


 
Alex Konshin   (2002-12-28 05:18) [20]

2msgipss: Ты просто забываешь о том, что у тебя массив массивов, т.е. каждый элемент - ДИНАМИЧЕСКИЙ массив.
CopyMemory и System.Move скопирует некий кусок памяти, и что толку? Здесь же мы имеем массив указателей на другие куски памяти, я уж не говорю о том, что дин.массив имеет заголок и счетчик ссылок в нем.
System.Copy вроде должен скопировать массив, но ты получишь новый массив ссылок на старые массивы.
Короче, les ответил, что нужно делать, но если посмотреть в код, то ясно, что там просто поэлементно все копируется.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
14-25052
SeF
2002-12-18 11:33
2003.01.09
Delphi 6 & Win2k server & fat32


1-24843
Сергей
2002-12-25 20:39
2003.01.09
Странное поведение AssignFile( ) - короче не работает, а почему?


14-25063
tytus
2002-12-20 19:31
2003.01.09
HEEELP!!!


7-25118
sancho
2002-10-28 19:05
2003.01.09
О часах windows и панели задач...


14-25095
Agent Smith
2002-12-21 20:31
2003.01.09
Клиффорд Саймак





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