博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
delphi定义结构体
阅读量:6420 次
发布时间:2019-06-23

本文共 1823 字,大约阅读时间需要 6 分钟。

 

//结构体的比较普遍的两用法,具体还是得靠多看例子,帮助等。

//1.作为一个对象结构型使用

 type

 TclassRecord = record

   rDate  : string;

  rTime : string;

 end;

//2.作为记录类型(数据协议解析时比较多使用,灵活方便)

//首先枚举几种数据类型

  type TDateType =(TFullData,TRedDate,TReadTime);

  type

  TtextRecord = record

    case i : TDateType of

   //FullData与下面所有的变量,共享同一个内存区域,各个子类自己定义就可以了,i并无实际意义。

   //TtextRecord作为一个字符串的形式存在内存中

    TFullData :(fulldata : array[0..19]of char);

    TRedDate  :

      (

        rYear : array[0..1]of char;   // rYear的值就是 TFullData 的第1,第2位

        rMonth: array[0..1]of char;   // rMonth的值就是 TFullData 的第3,第4位

        rDay  : array[0..1]of char;   // rDay的值就是 TFullData 的第5,第6位

      );

    TReadTime :

      (

        rHour   : array[0..1]of char; //rHour的值也是 TFullData 的第1,第2位

        rMinute : array[0..1]of char; //rMinute的值也是 TFullData 的第3,第4位

        rSecs   : array[0..1]of char; // rSecs的值也是 TFullData 的第5,第6位

      );

  end;

var

  Form1: TForm1;

  GvTdatetimerecord : ^Tclassrecord;

  GvTtextRecord     : ^TtextRecord;

implementation

{$R *.dfm}

//----------作为对象类型使用-----------

procedure TForm1.Button1Click(Sender: TObject);

begin

  New(GvTdatetimerecord); //分配内存,按F1翻译吧

  GvTdatetimerecord.rDate := DateToStr(now);

  GvTdatetimerecord.rTime := TimeToStr(now);

  ShowMessage('当前日期时间:'+GvTdatetimerecord.rDate+GvTdatetimerecord.rTime);

  dispose(GvTdatetimerecord); //释放

end;

//---------------作为记录体使用----------

procedure TForm1.Button2Click(Sender: TObject);

begin

  new(GvTtextRecord);

  // 赋值

  fillchar(GvTtextRecord.fulldata,Sizeof(GvTtextRecord.fulldata),0);

  StrCopy(GvTtextRecord.fulldata,Pchar(FormatDateTime('yyMMDD',now)));

  showmessage(GvTtextRecord.fulldata);

  showmessage('年份:'+GvTtextRecord.rYear);

  //这些子结构体的值你可以尝试字做些例子,比较能理解记录类型的作用

//  fillchar(GvTtextRecord.fulldata,Sizeof(GvTtextRecord.fulldata),0);

//  StrCopy(GvTtextRecord.fulldata,Pchar(FormatDateTime('hhmmss',now)));

//  showmessage('小时:'+GvTtextRecord.rHour);

  dispose(GvTtextRecord)

end;

转载于:https://www.cnblogs.com/wanqian/p/3150231.html

你可能感兴趣的文章
linux vim详解
查看>>
Java23种设计模式案例:策略模式(strategy)
查看>>
XML解析之DOM4J
查看>>
图解微服务架构演进
查看>>
SQL PATINDEX 详解
查看>>
一些常用的网络命令
查看>>
CSP -- 运营商内容劫持(广告)的终结者
查看>>
DIV+CSS命名规范有助于SEO
查看>>
js生成二维码
查看>>
C指针练习
查看>>
web项目buildPath与lib的区别
查看>>
php对redis的set(集合)操作
查看>>
我的友情链接
查看>>
ifconfig:command not found的解决方法
查看>>
js使用正则表达式判断手机和固话格式
查看>>
计算机是怎么存储数字的
查看>>
Codeforces Round #369 (Div. 2) A. Bus to Udayland 水题
查看>>
adb上使用cp/mv命令的替代方法(failed on '***' - Cross-device link解决方法)
查看>>
C++标准库简介、与STL的关系。
查看>>
Spring Boot 3 Hibernate
查看>>