Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > TShiftState to Integer


Автор: Ak47black 24.8.2007, 17:06
Здравствуйте.
Чета я не понимаю как компилятор хранит TShiftState в памяти.
Если делаю так
Код

procedure TForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ShowMessage(IntToStr(Integer(Shift)));

то
Цитата

Invalid typecast

А если так 
Код

  ShowMessage(IntToStr(Integer(Pointer(@Shift)^)));

То 0 везде выдает, что очень странно для меня.
Как тут сделать правильно?

Автор: MetalFan 24.8.2007, 17:15
а так?
Код

var
  lInt: byte;
begin
  lInt := 0;
  Move( Shift, lInt, 1 );
  ShowMessage( IntToStr( lInt ) );
end;


Добавлено через 1 минуту и 46 секунд
или так:
Код

  ShowMessage( IntToStr( PByte( @Shift )^ ));


Добавлено через 3 минуты и 33 секунды
да и вообще твой последний вариант тоже работает у меня

Автор: Rennigth 24.8.2007, 17:44
Ak47black, 
MetalFan, 
Извращенцы smile
Код

  ShowMessage(IntToStr(Byte(Shift)));

Автор: Ak47black 24.8.2007, 18:13
 smile Вот почему компилятор так ругался.

Автор: MetalFan 24.8.2007, 22:07
Цитата(Rennigth @  24.8.2007,  17:44 Найти цитируемый пост)
Извращенцы smile

стараемсо)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)