如何将一个记录或类包装成流 ( 积分: 14 )

  • 主题发起人 主题发起人 ycguser
  • 开始时间 开始时间
Y

ycguser

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在要把这么一组类型的数据包成一个Stream的形式。
UserName:string;
v:Varaint
//此类型是一个byte的数组,从别的接口传过来时是Variant类型
我现在要将上面的二个数据想做成一个记录来存储,然后在转化成流的形式来将给别的接口使用。
不知道这样想法可行不,如果可行,上面如何实现,如果不可行,不知道有何别的办法。
我是新来的,没有分了,以后补上。
 
我现在要把这么一组类型的数据包成一个Stream的形式。
UserName:string;
v:Varaint
//此类型是一个byte的数组,从别的接口传过来时是Variant类型
我现在要将上面的二个数据想做成一个记录来存储,然后在转化成流的形式来将给别的接口使用。
不知道这样想法可行不,如果可行,上面如何实现,如果不可行,不知道有何别的办法。
我是新来的,没有分了,以后补上。
 
当然可以啊
tRec=record
username:String;
v:array[0..0] of byte;
end;
pRec=^tRec;
getmem(pRec,size);
计算好数据长度,直接copy进去就行了
创建一个memoryStream,把pRec的内容copy进去
 
楼上的,你这样处理是不行的!你怎么知道取得的“流”中字符串多长?数组V多长?所以应该将字符串长度,数组长度存入流,后面再加上具体的字符串及数组,而不是存这样的结构!
 
没问题的,string本身就带长度信息,流的长度减去string长度,不就是v的长度?
况且,record数据类型本身也带结构信息,不信你测试一下,一个record占的内存,要大于它的所有成员的长度之和,因为在成员之间有“衬垫”。
上面的代码,只要得到流的数据指针,直接当作pRec就应该没问题。
当然,如果更复杂的数据结构,还是加入结构信息比较好
 
后退
顶部