請教如何在 Delphi 中動態宣告一 record type? |
尚未結案
|
kevin@ROC
一般會員 發表:2 回覆:0 積分:0 註冊:2004-08-22 發送簡訊給我 |
|
bigdogchina
版主 發表:238 回覆:523 積分:312 註冊:2003-04-28 發送簡訊給我 |
Hi,kevin@ROC,您好!
小弟也是初通皮毛,不妨看看下面的code,或許會有點Help。我的實際目的是抛磚引玉,讓真正的高手顯身< class="code">
procedure TForm1.Button1Click(Sender: TObject);
type
TOneRecord = record
Name: String;
Age: Word;
end;
POneRecord = ^TOneRecord;
var
OneRecord: TOneRecord;
PRecord: POneRecord;
begin
OneRecord.Name := 'bigdogchina';
OneRecord.Age := 24;
PRecord := @OneRecord;
PRecord.Name := 'bigdogchina';
ShowMessage(PRecord^.Name);
ShowMessage(PRecord.Name);//這樣的寫法實際上是不符合規範的,但是編譯器已經自動幫我們轉化爲上一句
end; =================================
人生在勤,不索何獲
業精於勤荒於嬉,行成於思毀於隨
臨淵羡魚不如退而結網
------
人生在勤,不索何获? |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
不知您所謂的動態是指什麼?
如以 bigdogchina 兄的例子而言, 是指動態宣告 Name, Age 等嗎?
如果是的話, delphi 的 record 應該是不行
您可改用 Variant 的方式, 在 delphi help 的例子如下:
var A: Variant; begin A := VarArrayCreate([0, 4], varVariant); A[0] := 1; A[1] := 1234.5678; A[2] := 'Hello world'; A[3] := True; A[4] := VarArrayOf([1, 10, 100, 1000]); WriteLn(A[2]); { Hello world } WriteLn(A[4][2]); { 100 } end;還是您要的是動態陣列的 record, 是的話, 以 bigdogchina 兄的例子來說 procedure TForm1.Button1Click(Sender: TObject); type TOneRecord = record Name: String; Age: Word; end; var OneRecord: array of TOneRecord; i: integer; begin [red]SetLength(OneRecord, 10); for i := 0 to 9 do begin OneRecord.Name[i] := IntToStr(i); OneRecord.Age[i] := 24; end; end;-- 歡迎光臨 KTop 研究苑! |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
rest
一般會員 發表:5 回覆:23 積分:5 註冊:2004-05-12 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |