線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:901
推到 Plurk!
推到 Facebook!

如何將A陣列的位址指定給B陣列?

尚未結案
shihchin
一般會員


發表:10
回覆:12
積分:4
註冊:2002-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-24 18:56:40 IP:61.66.xxx.xxx 未訂閱
我想請問一下,我如何將A陣列的記憶體位址給B陣列,讓AB兩個陣列的位址是一樣了,使B陣列可以直接使用A陣列的資料(A:array[0..511] of word;B:array [0..1023] of byte;)?
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-24 20:12:36 IP:203.203.xxx.xxx 未訂閱
這是不可能的 A 與 B 兩個陣列在宣告上就不一樣, 分別佔有各自的記憶體空間 而且目前沒友誼個程式語言是可以宣告不同陣列型態在同一個記憶體位置並佔有相同空間的 你可以使用指標 A: array[0..511] of word; B: ^Byte; B := @A[0]; then B^ now = A[0] Inc(B) then B^ = A[1] Inc(B) then B^ = A[2] 或 A[511] = Byte((Pointer(Integer(B) 1023))^) A[10] = Byte((Pointer(Integer(B) 10))^)
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-24 22:25:39 IP:61.56.xxx.xxx 未訂閱
你好: 其實你可以試試宣告一個自訂類別,範例如下。    
Type
  TData = packed record
  // 宣告兩個變數使用重疊的記憶體
  case Word of
    0: (Data1 : array[0..511] of word);
    1: (Data2 : array [0..1023] of byte);
  end;    procedure TForm1.Button1Click(Sender: TObject);
var
  Data : TData;
begin
  Data.Data1 [0] := $1234;
  Data.Data1 [1] := $5678;
  Data.Data1 [2] := $9ABC;
  Data.Data1 [3] := $DEF0;      memo1.Lines.Add (IntToHex (Data.Data2 [1], 2));
  memo1.Lines.Add (IntToHex (Data.Data2 [0], 2));
  memo1.Lines.Add (IntToHex (Data.Data2 [3], 2));
  memo1.Lines.Add (IntToHex (Data.Data2 [2], 2));
  memo1.Lines.Add (IntToHex (Data.Data2 [5], 2));
  memo1.Lines.Add (IntToHex (Data.Data2 [4], 2));
  memo1.Lines.Add (IntToHex (Data.Data2 [7], 2));
  memo1.Lines.Add (IntToHex (Data.Data2 [6], 2));
{
產生結果
12
34
56
78
9A
BC
DE
F0
}
end;
請參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32757 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34717
系統時間:2024-04-29 22:02:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!