1樓:網友
做奇偶交換很簡單,但你要求程式中有那些**,就讓人匪夷所思了。
tel:array[1..12] of char; /這個是儲存字元的陣列。
tel[i]:=z'; 這個幹嘛用?
tel[i]:=; 這個在提取資料到陣列中時用到。
2樓:網友
額 procedure : tobject);
vari: integer;
arr:array[1..12] of char;
beginfillchar(arr,12,0);
for i :=1 to length( doif i mod 2 =0 then
if i-1 <>0 then
arr[i-1]:=
elseelse
if i + 1<=12 then
arr[i+1]:=
arr;end;但是沒有你說的那個**吶?
3樓:網友
嘗試過了,沒法子把上面的程式放進去,期待答案。。。
請問:delphi 中陣列作為函式的引數傳遞,這樣傳過去的是位址,怎樣把陣列作為值傳遞過去?
4樓:網友
在 delphi 中,引數的傳遞可分為值傳遞、var位址傳遞,以及 out(輸出)、const(常數)。
前兩者的區別,功能上的區別在於:
值傳遞過程中,對於引數的修改不影響源。
引用傳遞過程中,對於引數的修改,會直接修改源本身。
如果是以引用方式(即傳遞位址方式),前面需要新增關鍵字var
如:function na:intarray): integer;
問題描述中的**,實現的就是值傳遞而非位址傳遞方式。
5樓:網友
你這個是靜態陣列,本身就是值傳遞的。
6樓:網友
我測試發現,只要在函式定義中不使用var,這個陣列就是值傳遞啊,函式內部修改了也無效!!!親測。
delphi中陣列是如何用的?
7樓:陽光上的橋
定義乙個一維護陣列:
vari:integer;
a1: array [1..100] of integer;
這樣定義以後,就有a1[1]~a1[100]這樣的100個整型變數可以使用,當然陣列的元素也可以是其它的任何型別。
陣列的初始化一般使用迴圈語句,例如:
for i:=1 to 100 do a1[i]:=0;
定義二維陣列的語法例子:
vari,j:integer;
a2:array [1..10, 1..10] of integer;
這樣定義以後a2陣列的元素是二維的,比如a2[1,1]~a2[10,10],總共10*10=100個元素。
二維陣列的初始化和一維非常類似,例如:
for i:=1 to 10 do for j:=1 to 10 do a2[i,j]:=0;
delphi乙個陣列如何複製另乙個陣列?
8樓:網友
vara, b: array of integer;
beginsetlength(a, 2);
setlength(b, 2);
a[0]:= 1;
a[1]:= 2;
b:= copy(a); // 整個陣列都複製過去b:= copy(a, 0, 2); // 選擇性複製b[0]:= 2;
showmessagefmt('a0:%d,b0:%d', [a[0], b[0]])// a0:1,b0:2
end;
delphi 7 中陣列如何當引數
9樓:至少讓我看一眼
因為你在函式中傳遞的陣列的形參的型別的是tdigits。但是實參s卻不是tdigits而是array[1..8] of longint。
固然實參的宣告與形參就形式上來說是一致的(都是array[1..8] of longint)。但是在程式中tdigits與實參s的型別卻不能被認定為同種型別。
usessysutils;
typetdigits = array [1 ..8] of longint;
vara, k, t, i, j: longint; s: tdigits;
function findt(f: tdigits; a, n: longint): boolean;
vari: longint;
beginfor i := 1 to n do
beginif (f[i] = a) then
beginfindt := false;
break;
end;end;
if (i = n) then
findt := true;
end;begin
randomize;
k := 1;
j := 1;
for i := 1 to 8 do
begina := random(8) +1;
k := k + 1;
if (k <= 2) then
begins[i] := a;
t := a;
endelse
beginfor j := 1 to i - 1 do
beginif s[j] = a then
beginrepeat
a := random(8) +1;
until (findt(s, a, 8) = false);
if (findt(s, a, 8) = false) then
s[i] := a;
endelse
beginend;
end;if (j = i) then
s[i] := a;
end;end;
for i := 1 to 8 do
write(s[i], ' ');
readln;
end.
10樓:網友
可以設定你的陣列為乙個列舉型, type tarr = array[0..3] of char;
procedure test(arr:tarr);
或者用動指標。
11樓:糖糖寳寳
在函式中如果陣列的個數不定,可以使用開放陣列引數。
實參可以接受靜態陣列和動態陣列。
procedure p1(a:array of byte);
beginshowmessage( inttohex( integer(@a),2));
showmessage(inttostr(a[0]))
end;procedure : tobject);
vara:array[0..5] of byte;
beginshowmessage(inttohex( integer(@a),2));
p1(a);
end;function find(a: array of char): integer;
以上函式使用字元陣列作為引數傳值,其中a:array of char雖然有著與動態陣列。
dynamic array相近的形式,但是在這裡它並不代表著動態陣列。這裡a:array of char
可以使用任意靜態或動態陣列。
另外,如果一定使a:array of char為動態陣列,則須使用以下形式:
type tdynamicchararray = array of char;
function find(a: tdynamicchararray): integer;
例子(function find(a: array of char): integer;
beginsetlength(a,100);//出錯,應為setlength只能用於動態陣列。
end;function find(a: tdynamicchararray): integer;
beginsetlength(a, 100);//正確。
end;
delphi中如何將陣列轉換為指標?
12樓:網友
我覺得你應該先搞清楚writebuffer寫入的時候是按照多少位元組寫入的,也就是說是1位元組、2位元組還是其它。
一般如果僅僅是記憶體區域的話,我覺得按1位元組的可能性最大,這樣就存在問題了,你定義的是bufbit: array of integer; integer在delphi中是4位元組的,你要是轉化的話建議轉化為byte指標比較好:
varbp: pbyte;
beginbp:= pbyte(@bufbit[0]);
處理部分。另外,一樓所說很有道理!
1、看你writebuffer的寫法似乎是為了和c語法相容,未指定長度的話可能會以 0 作為結束符,需要注意。
2、或者裡面隱含處理的長度,這樣的寫法不安全,可能會造成未知的錯誤,或讓程式崩潰!
13樓:文件類共創空間
關於delphi陣列,指標,字串轉換的例子:
varaa: array [0..5] of char;
bb:pointer;
cc:string;
dd:pchar;
procedure : tobject);
begindd:='abcdef';
以下是pchar內容轉陣列。
fillchar(aa,length(dd),#
move(dd^,aa,sizeof(aa));
以下是陣列傳遞到指標。
bb:=getmemory(sizeof(aa));
move(aa,bb^,sizeof(aa));
以下是指標內容傳遞給字串。
setlength(cc,sizeof(aa));
move(bb^,cc[1],sizeof(aa));
freememory(bb);//這個是釋放記憶體//以下是陣列轉pchar
dd:='';
dd:=pchar(@aa);
messagebox(0,pchar('cc: '+cc),pchar('dd: '+dd),0);
end;
14樓:文句子
@bufbit,還是@bufbit[0]
如果bufbit定義的下標是從0開始的,二種寫法沒有區別,效果一樣。@是肯定都要帶著的。
但是你的陣列如果僅僅是寫了「var bufbit: array of integer;」,肯定不能直接拿來引用。
引用前要麼動態分配一下,要麼直接重新定義成固定長度的陣列,如array [0..bufmaxsize-1]of integer;。pascal不像c,它定義陣列的下標可以不從0開始。
15樓:網友
@bufbit[0]就可以了,會自動轉換的。
delphi7如何個一維陣列賦初值
16樓:網友
vari : integer;
arr1 : array[0..9] of integer;
arr2 : array[0..9] of char;
begin/如果是初始化是給每個元素相同的初值,可以用fillchar這個函式來。
fillchar(arr1,sizeof(arr1),0);
fillchar(arr2,sizeof(arr2),#
如果每個元素要賦的初值不同,只能乙個個來賦值了for i := 0 to 9 do
beginarr1[i] := i;
end;end;
Delphi中的low(陣列)是什么意思
high x 函式返回引數的取值範圍內的最大值,其型別為x,或x的 索引。x既可以是一個型別標識,也可以是一個變數,其型別必須為下面之一 變數型別 high x 的返回值 序數型別 這一型別的最高取值 陣列型別 陣列索引的最大值 字串型別 這一字串宣告過的長度 動態陣列 返回實際元素個數的負值 字串...
如何在Delphi中實現停靠,delphi2007怎麼把懸浮的工具欄弄成停靠的
delphi安裝目錄裡面有demo,自己去找找.delphi2007怎麼把懸浮的工具欄弄成停靠的 選單view desktops default layout delphi中元件的浮動和被停靠的是什麼意思?這是實現拖曳 drag 功能,只有支援浮動的視覺化元件 如item.可以被拖曳,有被停靠屬性的...
delphi判斷是否有字串,delphi判斷字串是否含有數字
有兩種方法 1 在edit1的onkeypress事件中輸入如下 delphi 判斷字串是否含有數字 有兩種方法 1 在edit1的onkeypress事件中輸入如下 delphi如何判斷一個字串是否包含另一個字串 if pos 另一個字串 一個字條串 0 then begin 包含end delp...