![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
превод ;integer в массив byte
{bas} © (2002-06-20 12:47:00)Привет всем!!!
Не подскажите как перевести integer, float и т.д. в массив byte
kull (2002-06-20 18:43:00) [1]
> Сейчас свой пример (2) преспокойно откомпилил в D3 и D6
Откомпилить то откомпилил но если присвоить: a[0] := 0,
то поменяется и содержимое b что не всегда желательно, т.е. присваивание это не простой перенос содержимого а манипуляции с одной и той же областью памяти.
есть разница integer или указатель на integer...
PVOzerski (2002-06-20 18:27:00) [2]2kull © (20.06.02 17:29):
Сейчас свой пример (2) преспокойно откомпилил в D3 и D6
Coalycat (2002-06-20 17:38:00) [3]Как комментарий к варианту MBo ©. Иногда приходится байты местами переставлять.
kull (2002-06-20 17:29:00) [4]Хотя с другой стороны - как присваивать массив через ":=" ?
kull (2002-06-20 17:15:00) [5]Да да верно...
PVOzerski (2002-06-20 15:40:00) [6]2kull © (20.06.02 15:04):
Так ведь игра в absolute, записи и указатели - для возможности использовать нормальный оператор присваивания := вместо move!
kull (2002-06-20 15:04:00) [7]С absolute и указателями тоже вариант.
Один недостаток - разные переменные а область памяти одна.
Не подходит когда надо чтобы исходные данные остались неизменными.
MBo (2002-06-20 13:23:00) [8]4) как вариант 2
i:integer;
p:pbytearray;
p:=@i;
p[3]:=5;
{bas} (2002-06-20 13:21:00) [9]спасибо
PVOzerski (2002-06-20 13:15:00) [10]А также:
1)
var
a:array[0..3]of byte;
b:integer absolute a;
2)
type
tArray=array[0..3]of byte;
var
a:tArray;
b:integer;
...
a:=tArray(pointer(@b)^);
3)
var
ab:record
case integer of
0:(a:array[0..3]of byte);
1:(b:integer);
end;
kull (2002-06-20 13:12:00) [11]Move(i,a,SizeOf(i));
Move(i,a[0],SizeOf(i));
Да и так и так можно.
{bas} (2002-06-20 13:04:00) [12]>>kull
да спасибо, только наверное Move(i,a,SizeOf(i));
kull (2002-06-20 12:51:00) [13]Может так?
type
a: array[0..3] of byte;
i: Integer;
begin
Move(i,a[0],SizeOf(i));
end;