2009-06-11 9 views
8

में गतिशील सरणी स्थिरांक सरणी कॉपी मैं एक निश्चित निरंतर सरणीडेल्फी

constAry1: array [1..10] of byte = (1,2,3,4,5,6,7,8,9,10); 

और एक गतिशील सरणी

dynAry1: array of byte; 

है क्या को constAry1से मूल्यों को कॉपी करने के लिए सबसे आसान तरीका है dynAry1?

यदि आपके पास सरणी (बहुआयामी) का एक स्थिर सरणी है तो क्या यह बदलता है?

constArys: array [1..10] of array [1..10] of byte = . . . . . 

उत्तर

11
function CopyByteArray(const C: array of Byte): TByteDynArray; 
begin 
    SetLength(Result, Length(C)); 
    Move(C[Low(C)], Result[0], Length(C)); 
end; 

procedure TFormMain.Button1Click(Sender: TObject); 
const 
    C: array[1..10] of Byte = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 
var 
    D: TByteDynArray; 
    I: Integer; 
begin 
    D := CopyByteArray(C); 
    for I := Low(D) to High(D) do 
    OutputDebugString(PChar(Format('%d: %d', [I, D[I]]))); 
end; 

procedure TFormMain.Button2Click(Sender: TObject); 
const 
    C: array[1..10, 1..10] of Byte = (
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
    (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); 

var 
    D: array of TByteDynArray; 
    I, J: Integer; 
begin 
    SetLength(D, Length(C)); 
    for I := 0 to Length(D) - 1 do 
    D[I] := CopyByteArray(C[Low(C) + I]); 

    for I := Low(D) to High(D) do 
    for J := Low(D[I]) to High(D[I]) do 
     OutputDebugString(PChar(Format('%d[%d]: %d', [I, J, D[I][J]]))); 
end; 
24

यह constAry1 करने के लिए dynAry कॉपी कर देंगे।

SetLength(dynAry, Length(constAry1)); 
Move(constAry1[Low(constAry1)], dynAry[Low(dynAry)], SizeOf(constAry1)); 
+0

मेरा मानना ​​है कि दोनों उत्तर सही हैं, तो मैं (मैं यह मतदान) इसे और अधिक पूरा हो गया है, क्योंकि TOndrej के स्वीकार करने के लिए जा रहा हूँ, तुम्हारा गलत है नहीं कि। –

+0

क्या यह SizeOf() या लंबाई (constAry) होना चाहिए? –

+0

SizeOf ठीक है ... – gabr