指標轉型一問 |
尚未結案
|
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
引言: 我有兩個問題,問題一: 在C 中, int *pI; 轉型方法為 (double*)pI 在Delphi 中,pI = ^integer; 請問指標要如何轉成double? PDouble(pointer(PI))^.. are you sure? or you want to typecast and integer to double, e.g. double(pI^) 問題二: 在處理ComboBox 的AddObject 時,我必須寫一個繼承 TObject 的類別 然後將我需要的資料格式,寫入Class Member中,是不是只有這個辦法? no... e.g. Items.AddObject('123',pointer(2)) |
BGman
初階會員 發表:28 回覆:85 積分:42 註冊:2003-01-10 發送簡訊給我 |
原來可以這樣用,果然厲害!但是還有一點小疑問...
type TRec = Record x : integer; y : integer; end; procedure TForm1.Button1Click(Sender: TObject); var MyRec :^TRec; begin new(MyRec); MyRec.x := 5; 為何不是? MyRec.x^ := 5; MyRec.y := 10;為何不是? MyRec.y^ := 10; ComboBox1.Items.AddObject('NO1',pointer(MyRec)); end; procedure TForm1.ComboBox1Change(Sender: TObject); var MyRec :^TRec; begin MyRec := pointer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]); ShowMessage(IntToStr(MyRec.x)); end; |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
Delphi is too nice and you can ignore the ^ in some cases,e.g.
PRec = ^TRec; TRec = record A: integer; end; var ARec: PRec; ..... ARec^.A := 1; { can be written as ARec.A := 1;}IMHO, better keep the '^'. It make it clear it is a pointer to some records, not an object. <>< face="Verdana, Arial, Helvetica">引言: 原來可以這樣用,果然厲害!但是還有一點小疑問... type TRec = Record x : integer; y : integer; end; procedure TForm1.Button1Click(Sender: TObject); var MyRec :^TRec; begin new(MyRec); MyRec.x := 5; == MyRec^.x := 5; MyRec.y := 10; == MyRec^.y := 10; ComboBox1.Items.AddObject('NO1',pointer(MyRec)); end; procedure TForm1.ComboBox1Change(Sender: TObject); var MyRec :^TRec; begin MyRec := pointer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]); ShowMessage(IntToStr(MyRec.x)); end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |