Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразовать integer в array of byte 
:(
    Опции темы
Paradox
Дата 5.2.2004, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



Как можно преобразовать
Код
integer
в
Код
array[1..4] of byte
в сях есть классные операции сдвига, а на дельфи сталкиваться не приходилось
Как можно такое сделать подскажите плиз


--------------------
---
PM MAIL WWW   Вверх
<Spawn>
Дата 5.2.2004, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Для сдвига используй shr и shl. Но можно и по другому узнать байты:

Код
i: integer;
LongRec(i).Bytes[0]



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Paradox
Дата 5.2.2004, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



<Spawn> спасибо большое, только
Код
LongRec(i).Bytes[0]
не работает
так как там только Lo и Hi для longrec, но с использованием сдвигов все ок
Все получилось, короче говоря !!!


--------------------
---
PM MAIL WWW   Вверх
<Spawn>
Дата 5.2.2004, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Хорошо, что у тебя получилось, но хочу заметить что LongRec.Bytes и есть array[1..4] of Byte smile.gif, т.е. можно использовать на свое усмортрение любой байт из integer. Или ты имелл ввиду биты?


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Paradox
Дата 5.2.2004, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



Код
type

 LongRec = packed record
   Lo, Hi: Word;
 end;
это из хелпа
вероятно на
Код
LongRec.Bytes
компилятор из-за этого и ругается, или я совсем дятлом стал и ниче не понимаю ?


--------------------
---
PM MAIL WWW   Вверх
x77
Дата 5.2.2004, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Код

procedure TForm1.Button1Click(Sender: TObject);
type
 t = array [1..4] of byte;
var
 n: integer;
 a: t absolute n; // засовываем в память по тому же адресу, что и n
begin
 n := StrToInt (Edit1.Text); // всё, все данные уже на месте.

 ShowMessage (IntToStr (a [1]) + ',' +
   IntToStr (a [2]) + ',' +
   IntToStr (a [3]) + ',' +
   IntToStr (a [4]));
end;



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
<Spawn>
Дата 5.2.2004, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Paradox Вот как выглядит LongRec в SysUtils.pas:

Код
 LongRec = packed record
   case Integer of
     0: (Lo, Hi: Word);
     1: (Words: array [0..1] of Word);
     2: (Bytes: array [0..3] of Byte);
 end;



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Paradox
Дата 5.2.2004, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



<Spawn> а у меня так
Код
LongRec = packed record
   Lo, Hi: Word;
 end;

Стоить 5-я Дельфя
<Spawn> Огромное спасибо за участие в проблеме


--------------------
---
PM MAIL WWW   Вверх
dm9
Дата 7.2.2004, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



a : array [1..4] of byte;
b : integer;

a[1] := b and $FF;
a[2] := b and $FF00 shr 8;
a[3] := b and $FF0000; shr 16;
a[4] := b shr 24;

smile.gif

PM MAIL ICQ   Вверх
RinOSpro
Дата 23.7.2008, 15:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











  a[1] := Hi(i shr 16); 
  a[2] := Lo(i shr 16); 
  a[3] := Lo(i shr 8);  
  a[4] := Lo(i);
  Вверх
VICTAR
Дата 23.7.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



RinOSpro,  smile 
за 4 года тема явно не потеряла свою актуальность  smile 
PM MAIL   Вверх
Snowy
Дата 23.7.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Фу. Не ковыряй мёртвых...
PM MAIL   Вверх
VICTAR
Дата 23.7.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



Поздно, уже запах пошел
/пошел открывать форточку
 smile 
PM MAIL   Вверх
Virtuals
Дата 23.7.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 476
Регистрация: 27.11.2006

Репутация: 3
Всего: 11



ух ща отвечу smile 
Код

Var
  Ai:integer;
  Bb:array[1..4] of byte absolute Ai;
begin
end

все пользуйте наздоровье хоть из Ai в Bb, хоть обратно smile 
у кого получится короче? smile 
PM MAIL ICQ   Вверх
RinOSpro
Дата 25.7.2008, 09:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Snowy @  23.7.2008,  15:24 Найти цитируемый пост)
Фу. Не ковыряй мёртвых...


А мне как раз нужно было такое же сделать только предложенные варианты что то не устраивали... ну сделал по своему решил выложить )

Virtuals а вот absolute лучше не использовать...
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.