
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.30] |
![]() |
|
Страницы: (9) « Первая ... 2 3 [4] 5 6 ... 8 9 все ( Перейти к последнему сообщению ) |
![]() |
Сообщ.
#46
,
|
|
Арифметика указателей.
Цитата Нижеследующий код ![]() var P1, P2: ^LongInt; L: LongInt; begin P1 := @L; { назначаем оба указателя на одно и то же место } P2 := @L; Inc(P2); { Увеличиваем один } { Здесь мы получаем разницу между смещениями двух указателей. Поскольку первоначально они указывали на одно и то же место памяти, то результатом данного вызова будет разница между двумя указателями после вызова Inc(). } L := Ofs(P2^) - Ofs(P1^); { L = 4; т.е. sizeof(longInt) } end; Я бы вместо этого сделал так: ![]() ![]() function PtrToInt(P: Pointer): LongWord; asm mov eax, P; mov result, eax; end; var P1, P2: ^LongInt; L: LongInt; begin P1 := @L; { назначаем оба указателя на одно и то же место } P2 := @L; Inc(P2); { Увеличиваем один } { Здесь мы получаем разницу между смещениями двух указателей. Поскольку первоначально они указывали на одно и то же место памяти, то результатом данного вызова будет разница между двумя указателями после вызова Inc(). } L := PtrToInt(P2) - PtrToInt(P1); { L = 4; т.е. sizeof(longInt) } end. |
![]() |
Сообщ.
#47
,
|
|
Цитата --= Eagle =-- @ function PtrToInt(P: Pointer): LongWord; asm mov eax, P; mov result, eax; end А простое приведение типов уже не в моде? |
Сообщ.
#48
,
|
|
|
M Deleted by Vit. Все нарекания к форуму сайту и т.п. - в соответствующий раздел! Пока устное предупреждение |
Сообщ.
#49
,
|
|
|
Топик:
Системные функции и WinAPI->Реестр и INI файлы->Как получить событие о смене реестра А в топике про то, как отловить изменения содержимого буфера обмена. |
![]() |
Сообщ.
#50
,
|
|
ANSI ---> ASCII
В строке ![]() ![]() if kod 13 then Result[i]:=' '; пропущен знак равенства (как я понял), правильно так: ![]() ![]() if kod=13 then Result[i]:=' '; |
![]() |
Сообщ.
#51
,
|
|
"Как создавать потоки без класса TThread?" - топик дублируется
|
Сообщ.
#52
,
|
|
|
Скачала сегодня... Почти ничего нет из того что мне нужно
![]() ![]() У меня такое маленькое пожелание для след версии: было б неплохо если б код выделялся чемнить по типу как на форуме. И Побольше про майнменю!! ![]() |
![]() |
Сообщ.
#53
,
|
|
Цитата Maysa @ Почти ничего нет из того что мне нужно ![]() ![]() Maysa, не факт, что никогда не понадобится (все мы когда-то ламерами были ![]() |
![]() |
Сообщ.
#54
,
|
|
Цитата Maysa, 05.06.2005, 17:10:46, 739313 Почти ничего нет из того что мне нужно Наверно это не для таких ламеров как я Может ты просто не можешь найти то, что тебе нужно? ![]() ![]() |
Сообщ.
#55
,
|
|
|
Ну может просто и не могу
![]() ![]() ![]() |
Сообщ.
#56
,
|
|
|
Спасибо за базу знаний, в частности был доработан под конкретные нужды и использован модифицированный алгоритм шифрования TEA.
(Математика, алгоритмы --> Контрольные суммы и шифрование ... --> Алгоритм шифрования TEA) При этом обнаружилась в алгоритме досадная ошибочка, в редких случаях приводящая к неправильной расшифровке сообщения. В процедуре EnCript: ![]() ![]() // Определяем позицию размещения ключа в блоке данных Randomize; if Len < 255 then I := Len else I := 255; repeat I := Random(I); if I < 4 then I := 4; //until I <= Len - 16; // При I := Len - 16 теряется последний байт ключа, при длинне сообщения < (255 - 21) // Поэтому, наверное лучше написать так (проверено, работает): until I < Len - 16; А байтик теряется при выполнении вот этого кусочка кода (чуть ниже в той же функции): ![]() ![]() // Сдвигаем данные с 14 позиции на одну вправо для метки // (буфер начинается с нуля) for A := Len - 1 downto 14 do ResultBuf[A] := ResultBuf[A - 1]; С уважением. Михаил. |
Сообщ.
#57
,
|
|
|
Против ничего не имею - классный FAQ (сочности нехватает)
но очень часто встречаются ошибки (недавно наткнулся на интересный FAQ ?....? ) - и непойму кто у кого копировал ![]() |
![]() |
Сообщ.
#58
,
|
|
Lord, Какой такой сочности?
Ошибки? укажи пальцом - исправим ![]() |
![]() |
|
|
Цитата Dufa, 13.08.2005, 19:12:09, 826647 Ошибки? укажи пальцом - исправим ![]() Пожалуйста - код проверки простого числа (asm) нерабочий. ![]() |