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

Вниз

Как пользоватся Move?   Найти похожие ветки 

 
Kolan ©   (2006-10-17 14:38) [0]

Здравствуйте,
 Научите.

Нужно скопировать один массив в другой. Вот так делаю без Move и все работает.

SetLength(FPackage, Length(Package));
 for I := Low(Package) to High(Package) do
   FPackage[I] := Package[I];
 


Вот так я делаю с Move и в итоге получаю AV.

SetLength(FPackage, Length(Package));
 Move(Package, FPackage,
   Length(Package)*SizeOf(Package[Low(Package)]));


1. В чем моя ошибка?
2. Как правильно.


 
Palladin ©   (2006-10-17 14:42) [1]

то что написано справедливо для статических массивов, в случае динамических

SetLength(FPackage, Length(Package));
Move(Package[0], FPackage[Low(Package)], Length(Package)*SizeOf(Package[Low(Package)]


 
MBo ©   (2006-10-17 14:43) [2]

Это уже третья или четвертая ветка, где ты спрашиваешь практически одно и то же - об использовании динамических массивов (строк) в var-параметрах...


 
palva ©   (2006-10-17 14:49) [3]

Зачем move? Присваивай массивы:
{$APPTYPE CONSOLE}
type
 Tm = array of char;
var
 m1, m2: Tm;
begin
 SetLength(m1, 2);
 m1[0] := "q";
 m1[1] := "w";
 m2 := m1;
 WriteLn(m2[0], m2[1]); // qw
end.


 
Kolan ©   (2006-10-17 14:50) [4]


> SetLength(FPackage, Length(Package));
> Move(Package[0], FPackage[Low(Package)], Length(Package)*SizeOf(Package[Low(Package)]

За пример благодарю.

> Это уже третья или четвертая ветка, где ты спрашиваешь практически
> одно и то же - об использовании динамических массивов (строк)
> в var-параметрах...

И вопрос №1 для меня пока на 100 не разрешен.

Вот это особенно FPackage[Low(Package)] остальные параметры вроде ясно ...


 
Kolan ©   (2006-10-17 14:52) [5]


> Зачем move? Присваивай массивы:

Не выйдет Package - открытый...
SavePackage(Package: array of Byte);


 
Kolan ©   (2006-10-17 14:54) [6]


> FPackage[Low(Package)]

Почему Low Package, а не FPackage?


 
Palladin ©   (2006-10-17 14:55) [7]


> FPackage[Low(Package)]


пока, применительно к Делфи, это равносильно FPackage[0], бо в открытых и динамических массивы нижний индекс всегда равен 0.. а написал так... просто... по инерции :)


 
Kolan ©   (2006-10-17 14:57) [8]

Может там
FPackage[Low(FPackage)]

Плохой пример взял имена похожи :(


 
MBo ©   (2006-10-17 14:58) [9]

>И вопрос №1 для меня пока на 100 не разрешен.
var-параметры представляют собой передаче параметра по ссылке - неявные указатели - процедуре передается адрес, однако программист передает не адрес в явном виде (с использованием оператора @ или указательных типов), а саму переменную, а компилятор подставляет в вызов ее адрес.
Динамические массивы и длинные строки - суть указатели на нулевой элемент массива (первый символ строки). Если использовать переменную-массив как var-параметр, получится передача указателя на указатель, а нужны данные, поэтому в подобных случаях нужно использовать Arr[0], String[1], или PChar(String)^


 
palva ©   (2006-10-17 14:59) [10]

> Не выйдет Package - открытый...
Первый раз об этом говоришь, может еще что-нибудь скрываешь?


 
Kolan ©   (2006-10-17 15:07) [11]


> palva ©   (17.10.06 14:59) [10]

Не больше ничего, конечно надо было это сказать.

> MBo ©   (17.10.06 14:58) [9]

А вот оно как.. шас пойду конкатенацию сделаю..



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

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

Наверх





Память: 0.47 MB
Время: 0.055 c
15-1160668265
menart
2006-10-12 19:51
2006.11.05
Modbus


3-1157968378
Neo Trinitron
2006-09-11 13:52
2006.11.05
MS Jet 4 и вложенные транзакции


3-1157521219
Bwa_JO
2006-09-06 09:40
2006.11.05
Помогите, плиз с кодировкой!


15-1160080323
Cyrax
2006-10-06 00:32
2006.11.05
Итераторы в Delphi


15-1161187243
Хинт
2006-10-18 20:00
2006.11.05
Вопрос по html (таблицы)





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