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

陣列內值的刪除

尚未結案
beta
一般會員


發表:7
回覆:11
積分:3
註冊:2003-01-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-10 13:17:05 IP:203.69.xxx.xxx 未訂閱
Ex: procedure setarray; var myarray,temparray:Array Of integer; i:integer; begin Setlength(MyAarray,4); SetLength(TempArray,3); For i:=0 to 3 do begin myarray[I]=i 1; end; 若我不想要MyArray[2]的值 然後把我要的其他值指定給TempArray=(1,2,4) 請教各位前輩有這種Function嗎(刪除陣列中某一值)? 還是我要用loop將值篩選後加入TempArray?? 感謝各位!!
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-10 13:37:30 IP:211.74.xxx.xxx 未訂閱
引言: Ex: procedure setarray; var myarray,temparray:Array Of integer; i:integer; begin Setlength(MyAarray,4); SetLength(TempArray,3); For i:=0 to 3 do begin myarray[I]=i 1; end; 若我不想要MyArray[2]的值 然後把我要的其他值指定給TempArray=(1,2,4) 請教各位前輩有這種Function嗎(刪除陣列中某一值)? 還是我要用loop將值篩選後加入TempArray?? 感謝各位!!
CopyMemory(@TempArray[0],@MyArray[0],Index*Sizeof(Integer)); CopyMemory(@TempArray[Index],@MyArray[Index 1],(Len-Index-1)*Sizeof(Integer));
beta
一般會員


發表:7
回覆:11
積分:3
註冊:2003-01-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-10 15:07:44 IP:203.69.xxx.xxx 未訂閱
以下是我試的結果: procedure TForm1.Button1Click(Sender: TObject); var AA,BB:array of integer; I:integer; begin Setlength(AA,4); Setlength(BB,3); For I:=0 to 3 do Begin AA[I]:=(I 1)*10; end; CopyMemory(@bb[0],@aa[1],(length(aa)-0-1)*Sizeof(Integer)); For i:=0 to 2 do Begin ShowMessage(IntToStr(bb[i])); end; 這個Function不管怎麼怎麼做,似乎不能直接達到我要的目的。 [1,2,3,4]要變成[1,3,4] 還是必須透過loop來完成,如有說錯請各位指教。
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-10 15:54:34 IP:218.80.xxx.xxx 未訂閱
分两次复制。(用loop更直观,没有多少忧劣之分)
procedure TForm1.Button1Click(Sender: TObject);
const
  DeleteIndex=1;
var
  AA,BB:array of integer;
  I:integer;
begin
  Setlength(AA,4);
  Setlength(BB,3);
  For I:=0 to 3 do
  Begin
    AA[I]:=(I+1)*10;
  end;
  if DeleteIndex>0 then
    Move(aa[0],bb[0],DeleteIndex*Sizeof(Integer));
  Move(aa[DeleteIndex+1],bb[DeleteIndex],(Length(bb)-1)*Sizeof(Integer));
  For i:=0 to 2 do
  Begin
    ShowMessage(IntToStr(bb[i]));
  end;
end;
久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
系統時間:2024-05-07 11:49:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!