delphi定義結構體


//結構體的比較普遍的兩用法,具體還是得靠多看例子,幫助等。

//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;

我解釋的可能不是很全面,樓主自己做例子領悟吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM