在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
//结构体的比较普遍的两用法,具体还是得靠多看例子,帮助等。 //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 : ^Tclas-s-record; 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; 我解释的可能不是很全面,楼主自己做例子领悟吧。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论