Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

Прокомментируйте, пожалуйста, код   Найти похожие ветки 

 
Udjin ©   (2003-09-02 22:02) [0]

type
TAr=array[1..1024] of byte;
Ar=^TAr;
var loop :Integer;
change : boolean;
begin
change := false;
for loop:=1 to SizeOf(r1) do
if Ar(@r1)^[Loop]<>Ar(@r2)^[loop] then
begin
change:=true;
end;
r1 и r2 некоторые записи. Эта штука их сравнивает. Хоть убейте не пойму как. Просветите плз.


 
Ерш твое имя   (2003-09-02 22:16) [1]

Просто побайтовое сравнение. Записи трактуются, как массивы байт (их приводятся к типизированным указателям), а элементы этих массивов сравниваются в цикле.

Есть недостатки. Во-первых, не хватает Break, поэтому получаем лишнюю работу. Во-вторых, в объявлении TAr лучше поставить packed (на сегодня это все равно, но на будущее лучше подстраховаться). В-третьих, надежно сработает только для packed записей. В-четвертых, не сработает для записей размером более 1024 байт. В-пятых, не сработает для записей разной длины.

А в-шестых, это делается проще и надежнее- надо сравнить размеры записей, и, если они равны, то вызвать CompareMem.


 
Ерш твое имя   (2003-09-02 22:18) [2]

Слово пропустил:
их адреса приводятся к типизированным указателям


 
Ерш твое имя   (2003-09-02 22:24) [3]

Еще добавка:
CompareMem тоже сработает только для packed записей.


 
Юрий Зотов ©   (2003-09-03 06:48) [4]

В общем, да, получилось изобретение велосипеда с квадратными колесами. Потому что то же самое (только быстрее и лучше) делает одна простая строка:
Сhange := not CompareMem(@R1, @R2, SizeOf(R1));



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

Текущий архив: 2003.09.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
3-71518
SkullNet
2003-08-31 03:44
2003.09.22
Фильтрация по статическим полям


1-71628
INTAARI
2003-09-11 14:48
2003.09.22
Как изменить цвет нескольких меток пользуясь свойством Components


1-71662
Vladislav
2003-09-08 16:44
2003.09.22
PDF viewer


14-71880
Hawk2
2003-09-03 16:04
2003.09.22
Что там внутри?


3-71532
Relaxxx
2003-08-29 10:30
2003.09.22
Footer у DBGridEh