请高手帮看看.(20分)

  • 主题发起人 tswhoney
  • 开始时间
T

tswhoney

Unregistered / Unconfirmed
GUEST, unregistred user!
如果twordarray=array[0..1] of word;
chksum:longword;
那末要使
chksum:=chksum+twordarray(buffer)成立;
其中的buffer必需是什么类型的变量?
 
它好像永远也不会成立。[:(] Buffer类型并不重要,只要你每次取得4个字节的一个双字
就可以相加,不过应该是强制类型转换为longword,或者integer;
 
to tseug,
为什么是:取得4个字节的一个双字
能详细解释一下这条语句吗?谢谢了.
 
我的源程序如下:
function checksum(var buffer;size:integer):word;
type
twordarray=array[0..1] of word;
var
chksum:longword;
i:integer;
begin
chksum:=0;
i:=0;
while size>1 do
begin
chksum:=chksum+twordarray(buffer);
inc(I);
size:=size-sizeof(word);
end;
......
提示
chksum:=chksum+twordarray(buffer);
[Error] Unit1.pas(163): Invalid typecast
 
function checksum(var Buffer; Size:Integer): Word; //不明白为什么是Word, 好像该longword;
var
P : ^LongWord;
Count : Integer;
begin
Count := Size;
P := @Buffer;

Result := 0;
while Count > 0 do
begin
Result := Result + P^;
Inc(P);
Dec(Count);
end
end;
 
这段代码还很不完善供你开阔思路:
因为我对你buffer参数的定义不太清楚,所以只是猜测为一个word型的数组,
size是word的个数
function checksum(var buffer;size:integer):word;
type
twordarray = array[0..1] of word;
ptwordarray = ^twordarray;
var
chksum:longword;
i:integer;
begin
chksum:=0;
for i:= 0 to size - 1 do
chksum:=chksum+ptwordarray(@buffer)^;
result:= chksum;
end;
 
这段代码还很不完善供你开阔思路:
因为我对你buffer参数的定义不太清楚,所以只是猜测为一个word型的数组,
size是word的个数
function checksum(var buffer;size:integer):word;
type
twordarray = array[0..1] of word;
ptwordarray = ^twordarray;
var
chksum:longword;
i:integer;
begin
chksum:=0;
for i:= 0 to size - 1 do
chksum:=chksum+ptwordarray(@buffer)^;
result:= chksum;
end;
 
function checksum(var buffer;size:integer):word;
type
twordarray=array[0..1] of word;
var
chksum:longword;
i:integer;
begin
chksum:=0;
i:=0;
while size>1 do
begin
chksum:=chksum+twordarray(buffer);
inc(I);
size:=size-sizeof(word);
end;
 
顶部