Главная страница
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.029 c
14-71888
panov
2003-09-02 20:09
2003.09.22
Всё глючит...я уже сам глючу... Пофлудим?


1-71625
Вован
2003-09-09 11:57
2003.09.22
Что-то не получается в TPopumMenu один из TMenuItem сделать


3-71502
LexaVV
2003-09-01 13:19
2003.09.22
DLL и MS SQL 2000


14-71906
shelest
2003-09-03 13:29
2003.09.22
DOA for Delphi 7


14-71877
Nik8.
2003-09-04 12:37
2003.09.22
Веб аддрес Журнала