怎么把一个数组赋值给一个结构体 50分不成敬意(50分)

  • 主题发起人 主题发起人 vincent-hu
  • 开始时间 开始时间
V

vincent-hu

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么把一个数组赋值给一个结构体
 
帮帮忙啊
自己顶一下
 
菜鸟
找了大富翁的资料也没找到
 
CopyMemory就可以了
 
以一个整型数组为例子吧。

type Array of Integer=Arrayofint;

然后在结构体里定义一个变量
aArray:Arrayofint;
 
先看看吧:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=698401
 
把一个数组赋值给一个结构体?
那数组是变体类型吗,结构体每个成员类型都相同吗
如果相同,那就把数组的元素一个挨一个的给结构体赋值就可以了
 
我不是那个意思
比如说
我现在有个数组长度为50
然后我想把数组第10个位置开始的20长度的(实际也是一个结构体)
赋给一个已经定义好的结构体
 
一个一个赋太麻烦了
最好用指针
可我指针又不会用
 
对了,要把结构体声明成 packed record ,不然会产生字节对齐问题!
type
TMyRecord = TRecord
a: Integer;
b: array[0..3] of Char;
end;
var
MyRecord: TMyRecord;
A: array[0..7] of Char;
...
CopyMemory(MyRecord, A, 8);
 
MyRecord 和 A本身就分别是指针
 
数组里我要截的那些正好是从C++定义的一个结构体
然后我想用指针一下传给我自己的结构体
 
代码:
function TFmPointPara.UnReadParam(ReceBuf : array of byte):integer ;
var
ParamStr : string;
TerminatalInfo : string;
Pos, DataLength : integer;
i, j : integer;
TmpByte : byte;
P : ^TTerminalPara;
begin
result := -1;
ParamStr := '';
for pos:=0 to 1023 do
begin
if ReceBuf[pos]=$66 then
break;
end;

DataLength := HexToInt(IntToHex(ReceBuf[4],0)+IntToHex(ReceBuf[3],0));
tmpbyte :=0;
for i:=0 to (DataLength+5-1) do tmpbyte := tmpbyte + ReceBuf;
if tmpByte <> Recebuf[DataLength+5] then
begin
PostMessageStr(Fm_Client.StatusBar1,'&Ecirc;&Otilde;&micro;&frac12;&Ograve;ì&sup3;&pound;&Ecirc;&yacute;&frac34;&Yacute;&pound;&iexcl;');
// WriteOperate(list,6,'&Ecirc;&Otilde;&micro;&frac12;&Ograve;ì&sup3;&pound;&Ecirc;&yacute;&frac34;&Yacute;&pound;&iexcl;');
exit;
end;
//&frac12;&acirc;°ü
if ReceBuf[pos+1] = $88 then
begin
for i := 3 downto 0 do
begin
TerminatalInfo := TerminatalInfo + IntToStr(ReceBuf[5+i]);
end;
DataLength := DataLength - 4;//4&Icirc;&ordf;&Ouml;&Otilde;&para;&Euml;±à&ordm;&Aring;&micro;&Auml;&sup3;¤&para;&Egrave;
end;
 
就是CopyMemory啦
 
怎么办啊
大家帮帮忙啊
 
可是我这出错
 
CopyMemory(p,@ReceBuf[9],DataLength )
这么写对吗
 
第一个参数是目标地址,第二个参数是源地址。
p是什么类型的
 
结构体指针
 
这话有二义性:
是内容为指针的结构体还是指向结构体的指针?
 

Similar threads

回复
0
查看
978
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部