Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.01.2011, 12:42
darkfox darkfox вне форума
Прохожий
 
Регистрация: 07.01.2011
Сообщения: 7
Репутация: 10
Печаль ^LongWord

type
Type1 = array [0..43] of longword;
Type2 = array [0..15] of byte;
...
implementation
type
PLongWord = ^LongWord;
...
procedure Procedure1(const K: Type2; var EK: Type1); overload;
var ...
begin
...
EK[0] := PLongWord(@K[0])^;
end;

Пример1:
K = 49 50 51 52 53 54 55 56 57 48 49 50 51 52 53 54
K[0] = 49
@K[0] = 0012F5D8
EK[0] = 875770417

Пример2:
K = 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
K[0] = 49
@K[0] = 0012F5D8
EK[0] = 825307441

Кто знает, объясните, пожалуйста, в чем фокус?
Откуда берется эта разница?

Последний раз редактировалось darkfox, 07.01.2011 в 12:54.
Ответить с цитированием
  #2  
Старый 07.01.2011, 15:56
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Никакого фокуса нет.
K[0] - первый байт.
@K[0] - адрес массива в памяти.
EK[0] - первые 4 байта массива K, считаемые как одно число из 4 байт.
В первом примере у тебя EK[0] выглядит как
$34333231 = 52 51 50 49 = 49+50*256+51*65536+52*65536*256 = 875770417
А во втором
$31313131 = 49 49 49 49 = 49+49*256+49*65536+49*65536*256 = 825307441.

Только что проверил на калькуляторе. Все верно.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 07.01.2011 в 15:59.
Ответить с цитированием
  #3  
Старый 07.01.2011, 16:36
darkfox darkfox вне форума
Прохожий
 
Регистрация: 07.01.2011
Сообщения: 7
Репутация: 10
По умолчанию

Спасибо большое!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025