//結構體的比較普遍的兩用法,具體還是得靠多看例子,幫助等。
//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;
我解釋的可能不是很全面,樓主自己做例子領悟吧。