结构体的序列和还原(使用Move方法)

// 定义结构体

type
TmyRec= record
name:string[10];
password:string[10];
end;

function RawToBytes(const AValue; const ASize: Integer): TBytes;
begin
SetLength(Result, ASize);
if ASize > 0 then begin
Move(AValue, Result[0], ASize);
end;
end;

procedure BytesToRaw(const AValue: TBytes; var VBuffer; const ASize: Integer);
begin
Assert(Length(AValue) >= ASize);
Move(AValue[0], VBuffer, ASize);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
rec: TmyRec;
rec2: TmyRec;
db:TBytes;
begin
rec.name :=‘cxg‘;
rec.password:=‘929‘;
// 序列结构体为bytes
db := RawToBytes(rec, SizeOf(rec));
// bytes还原结构体
BytesToRaw(db, rec2, SizeOf(rec2));
Caption := rec2.name+‘\‘+rec2.password;
end;

http://www.cnblogs.com/hnxxcxg/p/4253919.html

时间: 2024-10-11 08:32:14

结构体的序列和还原(使用Move方法)的相关文章

结构体的序列和还原

// 定义结构体 type TmyRec= record name:string[10]; password:string[10]; end; function RawToBytes(const AValue; const ASize: Integer): TBytes;begin SetLength(Result, ASize); if ASize > 0 then begin Move(AValue, Result[0], ASize); end;end; procedure BytesTo

【心得】关于删除结构体动态数组指定项的正确方法

网络上很多前辈提供的方法大多是这样写的: procedure DeleteArrItem(var arr: TArr; Index: Integer); var Count: Cardinal; begin Count := Length(arr); if (Count = 0) or (Index < 0) or (Index >= Count) then Exit; Move(arr[Index+1], arr[Index], (Count-Index)* SizeOf(arr[0]));

(struct)结构体变量作为函数参数调用的方法小结

结构体变量.结构指针变量.结构数组作为函数的参数应用实例分析 struct stud { long int num; float score; }; /*结构体变量作为函数的参数,修改之后的成员值不能返回到主调函数*/ void funvr(struct stud t) { t.num=2000101; t.score=71.0; } /*结构体数组作为函数的参数,修改后的元素的成员值能返回到主调函数*/ void funar(struct stud t[]) //void funar(stru

Nginx学习之三-ngx_http_request_t结构体

ngx_http_request_s是nginx中非常重要的一个结构体,贯穿于htpp请求处理的整个过程中. 下面解释了ngx_http_request_s结构体中与HTTP框架相关的重要的成员变量. [cpp] view plaincopyprint? struct ngx_http_request_s { uint32_t                          signature;         /* "HTTP" */ //请求对应的客户端连接 ngx_connec

结构体和值类型(转)

如果你曾经使用过 Objective-C 或者像 Ruby,Python,JavaScript 这样的语言,可能会觉得 Swift 里的结构体就像外星人一样奇异.类是面向对象编程语言中传统的结构单元.的确,和结构体相比,Swift 的类支持实现继承,(受限的)反射,析构函数和多所有者. 既然类比结构体强大这么多,为什么还要使用结构体?正是因为它的使用范围受限,使得结构体在构建代码块 (blocks) 的时候非常灵活.在本文中,你将会学习到结构体和其他的值类型是如何大幅提高代码的清晰度.灵活性和可

nginx的ngx_http_request_t结构体

struct ngx_http_request_s { uint32_t signature; /* "HTTP" */ //请求对应的客户端连接 ngx_connection_t *connection; //指向存放所有HTTP模块的上下文结构体的指针数组 void **ctx; //指向请求对应的存放main级别配置结构体的指针数组 void **main_conf; //指向请求对应的存放srv级别配置结构体的指针数组 void **srv_conf; //指向请求对应的存放l

Go的结构体

Go的结构体 结构体 Go语言提供了一种自定义数据类型,可以封装多个基本数据类型,这种数据类型叫结构体,英文名称struct 结构体的定义 type 类型名 struct { 字段名 字段类型 字段名 字段类型 - } 类型名:自定义结构体的名称,在同一个包内不能重复 字段名:结构体中的字段名必须惟一 字段类型:表示结构体字段的具体类型 例子一 type persion struct { name string city string age int8 } 结构体实例化 只有当结构体实例化时,才

9.Go语言基础之结构体

Go语言中没有类的概念,也不支持"类"的继承等面向对象的概念. Go语言中通过结构体的内嵌再配合接口,比面向对象具有更高的扩展性和灵活性. 1.类型别名和自定义类型 1.1自定义类型 在Go语言中有一些基本的数据类型,如string,整型,浮点型,布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型. 自定义类型是定义了一个全新的类型.我们可以基于内置的基本类型定义,也可以通过struct定义. //将MyInt定义为int类型 type MyInt int 通过Type关

Go语言基础之结构体

Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念.Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性. 类型别名和自定义类型 自定义类型 在Go语言中有一些基本的数据类型,如string.整型.浮点型.布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型. 自定义类型是定义了一个全新的类型.我们可以基于内置的基本类型定义,也可以通过struct定义.例如: //将MyInt定义为int类型 type MyInt int 通过Type关键字的定义,