全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1293
推到 Plurk!
推到 Facebook!

想請問指標的問題

答題得分者是:chris_shieh
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-03 10:27:17 IP:218.103.xxx.xxx 未訂閱
我現在有一個定義是 TableStruct : Array of String; TableStruct_SIZE : Array of integer; 一般的指標用法是 var TableStruct_Count :^integer; var X : integer; TableStruct_Count := @XXXTableStruct_Count; X := TableStruct_Count^; 但我想我的指標是指著 Array of String , Array of integer我要怎樣定義跟使用呢? 謝謝
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-03 10:45:52 IP:61.222.xxx.xxx 未訂閱
Type TAryStr = array of string; PAryStr = ^TAryStr;
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-03 11:11:45 IP:218.167.xxx.xxx 未訂閱
array變數 本身就是Pointer  From Delphi Help:
Dynamic-array variables are implicitly pointers and are managed by the same reference-counting technique used for long strings. 
To deallocate a dynamic array, assign nil to a variable that references the array or pass the variable to Finalize; 
either of these methods disposes of the array, provided there are no other references to it. 
Dynamic arrays are automatically released when their reference-count drops to zero. 
Dynamic arrays of length 0 have the value nil. 
Do not apply the dereference operator (^) to a dynamic-array variable or pass it to the New or Dispose procedure.
if X and Y are variables of the same dynamic-array type, X := Y points X to the same array as Y. 
(There is no need to allocate memory for X before performing this operation.) 
Unlike strings and static arrays, COPY-ON-WRITE is not employed for dynamic arrays, so they are not automatically copied before they are written to.    ex:    type
  TDynamicArrayType = Array of String; //要直接傳array 要先定義type
...    procedure ClearArray(var aryOld:TDynamicArrayType);
var
  aryNew:TDynamicArrayType;
begin
  aryNew:=aryOld;
  Showmessage('aryNew:'   IntToStr(Length(aryNew)));
  SetLength(aryOld,0);
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  aryOld:TDynamicArrayType;
begin
  SetLength(aryOld, 3);
  aryOld[0]:='test0';
  aryOld[1]:='test1';
  aryOld[2]:='test2';
  Showmessage('aryOld:'   IntToStr(Length(aryOld)));
  ClearArray(aryOld);
  Showmessage('aryOld:'   IntToStr(Length(aryOld)));    end;
@瞭解越多.懂得越少@
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-03 11:42:41 IP:218.103.xxx.xxx 未訂閱
引言: Type TAryStr = array of string; PAryStr = ^TAryStr;
請問為什麼 TAryStr = ^(array of string); 不能這樣?
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-03 12:33:22 IP:61.222.xxx.xxx 未訂閱
看一下這一題吧! http://delphi.ktop.com.tw/topic.php?TOPIC_ID=64704 我有貼上有關 「Delphi 程序代碼編寫標準指南」 期望對您有些助益。
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-03 13:35:46 IP:218.167.xxx.xxx 未訂閱
Delphi Help: You can declare a pointer to any type, using the syntax type pointerTypeName = ^type array of String => 不是一種type 所以你必須先定義 TAryStr = array of string; 才能 PAryStr = ^TAryStr; @瞭解越多.懂得越少@
SamSam1230
中階會員


發表:128
回覆:178
積分:65
註冊:2004-12-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-03 18:18:11 IP:218.103.xxx.xxx 未訂閱
兩位大大的答案都很好 真不知道怎樣給分 我想給chris_shieh , wameng是不會介意的 因為wameng的分比較多 謝謝 發表人 - samsam1230 於 2005/02/03 18:25:05
系統時間:2024-05-21 21:21:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!