关于数据类型转换的问题! 在线等待!!!!(50分)

C

cnwinds

Unregistered / Unconfirmed
GUEST, unregistred user!
var
buf:array[0..53] of char;
begin
Word(buf[0]) := $4d42
// 出错
LongWord(buf[2]) := LongWord(buf[2]) xor $0731
// 出错

应该怎样处理???????

 
有没有人知道呀!!!
 
buf[0]:=chr($4d42);
类型转换不能作为左值
 
char只是一字节的十六进制数
$4642是两字节,当然不对了。
 
我现在想赋一个word类型的值

buf[0] := $34;
buf[1] := $12;
能否用一句来实现?????
Word(buf[0]) := $1234;
 
不行,连编译都通不过的
 
var
buf:array[0..53] of char;
pWord: ^Word;
pLongWord: ^LongWord;
begin
pWord := @buf[0];
pWord := $4d42;

也不行, :(
 
if Word(buf[0]) <> $5054 then begin

end;

可以
 
Pascal是强类型语言,你能通过两次赋值成功为什么非用一次赋值呢?
 
用指针可以的呀:
var
buf:array[0..53] of char;
pWord: ^Word;
begin
pWord := @buf[0];
pWord^ := $4d42
//修改
....
end;
 
提醒:delphi中尽量不要用指针,即使使用也最好在局部范围内。
不同长度类型转换可以通过移位实现,且速度快!
 
多人接受答案了。
 
顶部