`

packed record和record的区别

阅读更多

packed record和record的区别2007年05月25日 星期五 09:38Record的数据各个字节都是对齐的,数据格式比较完整,所以这种格式相对packed占用的内存比较大,
但是因为格式比较整齐,所以电脑读取这个类型的数据的时候速度比较快。

而Packed Record对数据进行了压缩,节省了内存空间,当然他的速度也变的慢了。

   type  
       //    Declare    an    unpacked    record  
       TDefaultRecord    =    Record  
           name1        :    string[4];  
           floater    :    single;  
           name2        :    char;  
           int            :    Integer;  
       end;  
       //    Declare    a    packed    record  
       TPackedRecord    =    Packed    Record  
           name1        :    string[4];  
           floater    :    single;  
           name2        :    char;  
           int            :    Integer;  
       end;  
   var  
       defaultRec    :    TDefaultRecord;  
       packedRec      :    TPackedRecord;  
   begin  
       ShowMessage('Default    record    size    =    '+IntToStr(SizeOf(defaultRec)));  
       ShowMessage('Packed    record    size    =    '+IntToStr(SizeOf(packedRec)));  
   end;  
   
     Default    record    size    =    20  
     Packed    record    size    =    14  

不过,对于现在的操作系统来,packed Record 节省的那些空间已不用考虑他了。除了做DLL(不用packed容易造成内存混乱)和做硬件
编程时(比如串口)编程时必须用到packed Record,其它情况都可以用Record
 

分享到:
评论

相关推荐

    FMQA-packed test record.doc

    "FMQA-packed test record.doc" 提到的文件是一种用于管理质量保证的工具,它专注于产品包装阶段的质量控制。FMQA,即Factory Material Quality Assurance(工厂物料质量保证),是确保产品从生产到封装的每一步都...

    取得硬盘序列号

    TIDERegs = packed record bFeaturesReg: BYTE; // Used for specifying SMART "commands". bSectorCountReg: BYTE; // IDE sector count register bSectorNumberReg: BYTE; // IDE sector number register ...

    How to Send Information (String, Image, Record) Between Two Delphi Applications Using WM_COPYDATA.pdf

    TCopyDataStruct = packed record dwData: DWORD; // 可以传递最多32位的数据到接收方应用 cbData: DWORD; // 指向的数据大小(字节) lpData: Pointer; // 指向要传递给接收方应用的数据。此成员可以为nil。 ...

    delphi读取硬盘物理序列号

    TIDERegs = packed record bFeaturesReg: Byte; // 用于指定 SMART 命令 bSectorCountReg: Byte; // IDE 扇区计数寄存器 bSectorNumberReg: Byte; // IDE 扇区编号寄存器 bCylLowReg: Byte; // IDE 低序号圆柱...

    Delphi结构类型-全

    为了提高效率和减少内存占用,可以使用 `packed` 关键字来定义记录,这样记录中的数据成员将不会进行对齐处理。 例如: ```pascal type TX = packed record A: Char; B: Integer; end; ``` #### 三、数据对齐...

    北航编译作业PL0文法注释

    在PL0编译器中,使用了packed array和record类型来描述指令的结构。指令类型instruction定义了三个字段:函数代码f、层差l和地址a。函数代码f规定了指令的类型,如lit、opr、lod等,而层差l和地址a则规定了指令的...

    湖北省南漳县肖堰镇肖堰初级中学九年级英语全册《Unit 14 Have you packed yet(第3课时)》导学案(无答案

    本节课主要围绕《Unit 14 Have you packed yet》的第三课时展开,这是一节针对九年级学生的英语课程,采用的是人教新目标版教材。本课时的学习目标是让学生能够回答一些问题,以及在听一段对话后正确地写出答案。 ...

    通达信V6股票代码文件格式分析

    TFileHead_Tnf = packed record IP: array[0..39] of char; //--IP 地址 Unknown: word; //--未知 date: Integer; //--日期 time: Integer; //--时间 end; PFileHead_Stock = ^TFileHead_Tnf; TDataRecord_Tnf = ...

    delphi 硬盘cpu号bios号网卡号等

    TSrbIoControl = packed record HeaderLength : ULONG; Signature : Array[0..7] of Char; Timeout : ULONG; ControlCode : ULONG; ReturnCode : ULONG; Length : ULONG; end; SRB_IO_CONTROL = ...

    delphi 读取硬盘序号

    TSendCmdInParams = packed record cBufferSize: DWORD; // Buffer size in bytes irDriveRegs: TIDERegs; // Structure with drive register values. bDriveNumber: Byte; // Physical drive number to send ...

    RealView MDK中结构体存储方式

    在实际应用中,比如FAT文件系统中的DBR(Disk Boot Record)区域,由于其大小固定为512字节(一个扇区),为了充分利用这有限的空间,可能需要使用`__packed`来确保结构体成员紧密排列,避免不必要的填充字节。...

    Windows消息大全易语言版转换程序源码

    TMsg = packed record 。hwnd: HWND; / /窗口句柄 。message: UINT; / /消息常量标识符 。wParam: WPARAM ; // 32位消息的特定附加信息 。lParam: LPARAM ; // 32位消息的特定附加信息 。time: DWORD; / /消息...

    Windows消息大全易语言版

    TMsg = packed record hwnd: HWND; / /窗口句柄 message: UINT; / /消息常量标识符 wParam: WPARAM ; // 32位消息的特定附加信息 lParam: LPARAM ; // 32位消息的特定附加信息 time: DWORD; / /消息创建时的...

    delphi 记录体类型妙用

    这种类型需要使用`packed record`关键字,并且通常用于实现变长记录,但请注意,它们不支持默认构造函数和方法。 5. **记录的枚举类型** 你可以将记录与枚举类型结合使用,为特定的值提供更丰富的语义。例如,定义...

    C# 调用Delphi dll 实例代码

     TMydata = packed record id: Integer; name: char10; married: Boolean; salary: Double; end; PMydata = ^TMydata;  const RESSTR: array[0..4] of string = (‘HELLO’, ‘COLOR’, ‘DELPHI’, ‘shar

    股票数据文件格式分析及工具示例代码

    TDataRecord_Day=packed record rq: Integer; // 日期 kp: Single; // 开盘价 zg: Single; // 最高价 zd: Single; // 最低价 sp: Single; // 收盘价 sl: Single; // 成交量 je: Single; // 成交额 zj: Word;...

    DELPHI调用API

    Delphi提供了`packed record`关键字来定义这些数据类型,以确保它们与C/C++的对齐方式一致。 7. **内存管理**:如果API需要传递或返回动态分配的内存,如缓冲区,那么开发者需要负责内存的分配和释放。例如,使用`...

    windows消息处理机制

    TMsg = packed record hwnd: HWND; // 窗口句柄 message: UINT; // 消息常量标识符 wParam: WPARAM; // 32 位消息的特定附加信息 lParam: LPARAM; // 32 位消息的特定附加信息 time: DWORD; // 消息创建时的...

    增加ARP拦截的passthru驱动代码以及Delphi7如何使用该驱动

    另外,ARP和Rules结构对应Delphi7来说都是紧缩结构(Packed record),Delphi XE 居然不认,这里强调一下,Rules结构的尺寸是127,凡是不是这个尺寸的,passthru驱动不认账,无法调用,这个Rules结构到了Delphi XE ...

Global site tag (gtag.js) - Google Analytics