delphi中函式返回陣列問題,delphi 函式返回值的定義問題

2022-03-10 06:35:07 字數 3069 閱讀 9940

1樓:暢夏侯嵐

你定義的函式不是返回陣列型別的,只是返回乙個word//首先定義乙個陣列型別

type

tarr = array of integer;

//然後定義返回這個陣列型別的函式

function strsplit(strsplit,str:string):tarr ;

varstr: array[1..2] of integer;

i: integer;

begin

str[1]:=0;

str[2]:=1;

for i:= 1 to 2 do

result[i]:=strl[i];

end;

應該可以的,你再試試看

2樓:己聞楣

方法有二:

1、返回動態陣列(如樓上意見),但需要在給陣列元素賦值之前,申請空間,呼叫setlength,樓上的忽略了這句,必然出現資料訪問異常;呼叫setlength也有兩種方案,其一是每收集乙個,就申請擴大一次,再來賦值,其二是批量申請一批,例如一批幾百個,在未超越幾百個時,可以隨時賦值,當達到資料長度極限時,再次批量申請,最後根據實際收集到的元素個數,重新設定一次長度。

2、返回足夠大的靜態陣列,要求預先定義乙個足夠大的陣列型別和變數(根據需要而定,例如假設檔案不大,估計不會超過1萬個數兒,就定為10000),以變數作為引數傳入(var傳指標),函式處理時可以隨意賦值,但需要通過返回值指明實際上收集到的元素個數。

delphi 函式返回值的定義問題

3樓:木頭家的柏修斯

樓主:對的。

你可以自己試試麼,不用經常去問人的,呵呵。。。

在窗體上加入乙個tmemo和乙個tbutton在implementations後的部分加入如下**:

function sum(a,b:integer):integerbegin

a:=a+1;

b:=b+1;

result:=a+b;

end;

procedure tform1.button1click(sender:tobject)

vara,b:integer;

begin

a:=3;

b:=4;

memo1.lines.add('a+b='+inttostr(sum(a,b)));//輸出了一行「a+b=7」

memo1.lines.add('a='+inttostr(a)+',b='+inttostr(b));//輸出了一行「a=3,b=4」

end;

還請深刻體會delphi中的函式與過程引數問題~這是基礎問題哈~

4樓:偷心賊使

//i,j是兩個引數,後面是返回值的型別,用result來返回值//如下:呼叫是:myfun(5,6) ,返回值是:6.

function myfun(i,j: integer):integer;

begin

if i > j then

result := i

else

result := j;

end;

5樓:一人一碗

function myfun(i,j:integer):integer;

begin

result:=0;

for ii:=i to j do

result:=result+ii;

end;

這樣可以求出自然數列中從i到j這些數的和。

6樓:匿名使用者

後面的integer定義函式的返回值是整形,括號裡的integer定義函式的兩個引數i,j為整形。

例如下面函式,求兩數之和

function tform1.myfun(i, j: integer): integer;

begin

result:= i+j; //返回值為兩個引數的和

end;

我們可以在button的單擊事件呼叫它

procedure tform1.button1click(sender: tobject);

vari: integer;

begin

i:= myfun(3, 5); //呼叫函式求3和5的和,結果賦值給整形變數i

showmessage('兩數之和為:'+ inttostr(i)); //輸出函式計算的結果

end;

delphi裡function怎麼返回多個值

7樓:匿名使用者

delphi 裡 function 返回多個值,可以考慮以下方法:

一、函式的返回值使用 記錄 record 、陣列 array 等資料型別。 示例**如下:

type

tmydata = record 先定義乙個record有三個返回值

data1: string;

data2: string;

data3: string;

end;

//定義 function的**

function tform1.myfunction(parm: string): tmydata;

var mydata1: tmydata;

begin

mydata1.data1:= 'this is data1:';

mydata1.data2:= 'this is data2:';

mydata1.data3:= 'this is data3:';

result:= mydata1;      //傳回為乙個記錄record

end;

二、函式的引數使用 var 引用引數。示例**如下:

function abc(var aa,bb,cc:double):string;//返回3個double值,1個string值

varret: iwantdata;

begin

aa:=1.234;

bb:=2.021;

cc:=3.333;

result:='';

end;

delphi取餘問題,Delphi中的Mod 取模 是什麼意思

如果你是說負數也要取到正數的餘數?很簡單,取x的絕對值。如 x abs x mod y 但是即使使用了絕對值。求得的餘數依然是4,當x為正整數時,餘數才能為 124。因為當前的x超過了整數的最大值所以被錯誤的轉換為了乙個負數 211403004。使用該負數求餘自然為 4。如果你想要求得餘數為 124...

C裡返回值為int型別陣列的函式如何定義

int 實際上是乙個類,它的基類是array.實際上,所有的陣列型別都是類,而且基類是array.int arr new int 10 實際上是建立了int這種型別的乙個物件,只是微軟為了讓大家習慣,就使用了類似c 的陣列定義方式。你的補充問題是不是這個意思 arr randques randque...

運算子函式過載的返回值型別問題,c中為什麼賦值運算子過載返回型別是引用

引數型別 大家都bai知道運算子du 過載函式的引數類zhi型必須是引用型別,這dao是為什麼呢。內拿我們最常用的賦值運 容算符過載來說,如果引數型別不是引用型別,那麼傳參時就需要乙個物件的副本,將實參複製到形參,這種複製是淺複製,並不會為形參分配記憶體空間,這就導致如果類中有指標型別,形參和實參的...