![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как быстро скопировать record ? [D7]
Рекорд © (2007-01-08 07:14:00)
TMyRec = record
Name = string;
par1, par2 ... par100 : Integer;
end;
Хочется скопировать её через CopyMemory. Но мешает Name.
Нельзя ли как нибудь скопировать через CopyMemory без нэйма? А потом скопировать name через присваивание?
Потому, что просто лень писать
r2.par1 := r1.par1;
r2.par2 := r1.par2;
...
r2.par100 := r1.par100;
Palladin (2007-01-09 04:33:00) [21]без запуска все уже понятно
TMyRec у тебя указатель
опять же думать нужно головой
изучай паскаль и не выпендривайся
Рекорд (2007-01-09 04:29:00) [22]
> Palladin © (09.01.07 01:38) [8]
> > [7] Рекорд
> врешь, причем нагло...
А запустить Дельфи и проверить - слабо?
> Джо © (09.01.07 01:38) [9]
> SizeOf(TMyRec)-4 ни в коем случае не может быть равен 0.
SizeOf(TMyRec) = 4
Palladin (2007-01-09 01:56:00) [23]но про падеж с луны это просто возмутительно
в бойкот
Джо (2007-01-09 01:54:00) [24]> [13] ors_archangel © (09.01.07 01:51)
>
> > procedure dummy002(var r1,r2);
>
> Да, много ещё проблем будет от нестрогой типизации
Каждый сам себе — злобный Буратино :)
ors_archangel (2007-01-09 01:51:00) [25]
> procedure dummy002(var r1,r2);
Да, много ещё проблем будет от нестрогой типизации
Palladin (2007-01-09 01:43:00) [26]хотя может и не врет...
если
procedure dummy002(var r1,r2);
begin
...
end;
dummy002(myr1,myr2);
ну тогда сам виновать... головой думать нужно что делаешь...
второй вариант, своя самописная функциф sizeof... в чем сомневаюсь, но диагноз и рекомендации см выше
ors_archangel (2007-01-09 01:43:00) [27]..И заговорила Делфи человеческим голосом :) - от таких высказываний :)
ors_archangel (2007-01-09 01:39:00) [28]
> Что, с Луны свалился? Спроси у Дельфи.
Ну, если запись не занимает места :) то нафига её копировать-то?
з.ы. Ну теперь наконец-то решена проблема ОЗУ: пишем всё в записях, и можно хоть 5 Гигов, хоть 6! :))))))))
Джо (2007-01-09 01:38:00) [29]> [7] Рекорд (09.01.07 01:33)
>
> > Джо © (08.01.07 08:01) [6]
> >
> > > > Move(r1.par1, r2,par1, sizeof(r1)-4);
> > >
> > > И что это значит? Размер 0. Значит ошибку выдаст.
> >
> > Отчего же вдруг 0?
>
>
> Что, с Луны свалился? Спроси у Дельфи.
SizeOf(TMyRec)-4 ни в коем случае не может быть равен 0.
Palladin (2007-01-09 01:38:00) [30]
> [7] Рекорд
врешь, причем нагло...
Рекорд (2007-01-09 01:33:00) [31]
> Джо © (08.01.07 08:01) [6]
>
> > > Move(r1.par1, r2,par1, sizeof(r1)-4);
> >
> > И что это значит? Размер 0. Значит ошибку выдаст.
>
> Отчего же вдруг 0?
Что, с Луны свалился? Спроси у Дельфи.
Джо (2007-01-08 08:01:00) [32]> > Move(r1.par1, r2,par1, sizeof(r1)-4);
>
> И что это значит? Размер 0. Значит ошибку выдаст.
Отчего же вдруг 0?
Рекорд (2007-01-08 07:46:00) [33]
> ors_archangel © (08.01.07 07:37) [4]
> Рекорд, в твоём случае тебе рекомендуется и не кем-то там!
> а человеком уважаемым
Вах !
В каком он звании?
> Move(r1.par1, r2,par1, sizeof(r1)-4);
И что это значит? Размер 0. Значит ошибку выдаст.
> p.s. С Рождеством, хоть и прошедшим!
Аналогично.
ors_archangel (2007-01-08 07:37:00) [34]Рекорд, в твоём случае тебе рекомендуется и не кем-то там! а человеком уважаемым сначала скопировать себе поле Name, вот так:
r2.name := r1.name;
а потом, как с этим трудным делом справитесь, то можно и остальное наибыстрейшим образом-то и покопировать, прикинь? нет, ты код зацени:
Move(r1.par1, r2,par1, sizeof(r1)-4);
:))
p.s. С Рождеством, хоть и прошедшим!
p.p.s. В общем случае твой вопрос не имеет решения в рамках Паскаля.
Рекорд (2007-01-08 07:31:00) [35]
> Anatoly Podgoretsky © (08.01.07 07:16) [1]
>
> > Рекорд (08.01.2007 07:14:00) [0]
>
> А почему бы тебе не скопировать Name, а остальное с помощью
> CopyMemory
В этом и заключается вопрос.
Если знаешь как правильно это сделать - напиши.
ors_archangel (2007-01-08 07:19:00) [36]А записи записям разве не присваиваются, их, помойму, только сравнивать нельзя.... Правда, если присваиваются, то код колучается типа как в [0] (помойму в Delphi7 так было, когда смотрел)
Anatoly Podgoretsky (2007-01-08 07:16:00) [37]> Рекорд (08.01.2007 07:14:00) [0]
А почему бы тебе не скопировать Name, а остальное с помощью CopyMemory