Delphi里怎么传递数组的地址

作者&投稿:元陶 (若有异议请与网页底部的电邮联系)
请问:delphi 中数组作为函数的参数传递,这样传过去的是地址,怎样把数组作为值传递过去?~

//以传值方式传递数组参数的方法
function Fn1(Arr:array of Integer):Integer; //返回数组长度
var
iCyc:Integer;
begin
Result := 0;
for iCyc := Low(Arr) to High(Arr) do //计算数组长度
Inc(Result);
if Result > 0 then
Arr[Low(Arr)]:= 4; //改变数组中第一个元素的值,
//如果要禁止在函数过程中出现赋值行为,把函数声明成
// function Fn1(const Arr:array of Integer):Integer;
//这样,将不能对传进来的Arr数组进行赋值操作。
end;

//调用方法:
var
Arr: array [0..25] of Integer; //定义26个长度的数组
begin
Arr[0] :=2; //赋值
ShowMessage(IntToStr(Fn1( Arr)) + ';'+ IntToStr( Arr[0]));//A[0]的值没有被改变
end;

//使用自定义类型时:
type
IntArray = array[1..3] of Integer;
//调用方法:
var
Arr: IntArray;
begin
Arr[1] := 2;
ShowMessage(IntToStr(Fn1(Arr)) + ';'+ IntToStr(Arr[1]));
end;

给个例子你自己看

在 delphi 语言里,使用 @ 获取取变量等的地址,@ 也称为地址运算符。以下是示例代码:


procedure set_array;
var
test :  array [0..10] of integer;
p : ^integer;
i : integer;
begin
   p := @test;
   for i := 0 to 9 do
   begin
      p^ := i;
      inc(p);
   end;
end;



delphi里怎么在窗口间传递数据呢?
具体做法是:1、在uses里加入你的Unit的名。比如如果你的Unit叫Unit1。那么就可以像下面那样加。uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Unit1;2、另一种方法是,按alt+F11。其实也就是菜单File->Use Unit...然后你就可以传递数据了。form1.edi...

Delphi流程函数传递参数的几种形式
在Delphi过程、函数中传递参数几个修饰符为Const、Var、Out。另一种不加修饰符的为默认按值传递参数。一、默认方式以值方式传递参数 procedure TForm1.ProcNormal(Value: string);begin OrigNum:=Value+' Me';lblReturn.Caption:=OrigNum;\/\/OrigNum为'Hello Me'lblOrig.Caption:=Value;\/\/Value为'He...

delphi中的结构体如何作为参数传入函数
直接传结构体变量、传结构体指针。1、直接传结构体变量,对结构体成员进行操作不会改变原结构体成员的值。2、传结构体指针,对结构体成员操作就直接改变了结构体的值,实参传向形参的只是一个地址,快速。

delphi调webservice如何传人用户名和密码
通过SoapHeader认证、使用HTTPBasicAuthentication。1、在Delphi中调用webservice时,可以通过在Soap头中设置用户名和密码来进行认证。2、另一种常见的方法是使用HTTP基本身份验证。在Delphi中,可以通过设置HTTP请求的用户名和密码来传递认证信息。

Delphi里运行外部程序,如何给外部程序传递参数?
可以的啊传递参数运行的时候直接在后面空一格跟参数就行shellexecute里有参数这个项

在DELPHI中窗体之间 如何传递数据?
在delphi中窗体以Unit为单位,你可以将变量置于Interface即应用程序级变量,也可以作为窗体类public数据成员出现,这样在创建了这个窗体类的实例后就可以在另一个窗体类实例中访问这个变量。看了你的部分程序后,原来问题不是出在变量的窗体间传递上,而是你在进行delphi中窗体动态创建和释放中出现了问题。在T...

Delphi 文件传输
1.既然你要实现文件互传,那一般只能使用TCP方式(因为文件数据量一般比较大),那么在服务端使用TCP控件Listen,在客户端也使用TCP控件进行连接(connect),然后就可以了。如果你要实现双向传输,正如你所说,两边都要有服务端和客户端,即做一个软件,放两个TCP控件,一个用于服务端,一个用于客户端。

在delphi中窗体间怎么传递参数
通常,在 delphi 的窗体间传递参数,可以通过窗体类里添加类属性成员的办法。比如,需要 FormA 传递给 FormB 一个字符串变量 CurName,则可以在 FormB 的 public 里定义:传递参数通常如下:

【DELPHI】如何在两台电脑间传送文件?
Delphi 实现传送文件 1.建立两个工程Server及Client分别放TServerSocket及TClientSocket控件,Demo,Edit控件等。2.设置TServerSocket name为 SS, ServerType为stNonBlocking,TClientSocket name为cs,ClientType为ctNonBlocking表示异步读写信息。注意ClientType和ServerType要相一致.若为ctBlocking则表示同步读写信息。3.Sock...

Delphi中从一个窗体传参数到另一个窗体的办法有哪些?
session相当于delphi全局变量,你可以用全局变量,但建议,最好方法,就是写个带参数的方法,调用时传入即可 如你可以在你要调用的这样写 private FMyValue:string;public procedure SetParam(MyValue:string);...procdure TForm1.SetParam(MyValue:string);begin FMyValue := MyValue;end;MyValue 就你...

阳西县18170514412: Delphi里怎么传递数组的地址 -
贾胜普芬: 在 delphi 语言里,使用 @ 获取取变量等的地址,@ 也称为地址运算符.以下是示例代码:procedure set_array; var test : array [0..10] of integer; p : ^integer; i : integer; begin p := @test; for i := 0 to 9 do begin p^ := i; inc(p); end; end;

阳西县18170514412: delphi中是否有拷贝数组的函数 -
贾胜普芬: 数组的拷贝,使用 copy 函数就可以了,以下是示例:procedure TForm1.Button1Click(Sender: TObject); var A, B, C: array Of Integer; begin SetLength(A, 2); SetLength(B, 2); SetLength(C, 2); A[0]:= 1; A[1]:= 2; //引用式复制 B := A; ...

阳西县18170514412: 请问:delphi 中数组作为函数的参数传递,这样传过去的是地址,怎样把数组作为值传递过去? -
贾胜普芬: 在 delphi 中,参数的传递可分为值传递、var地址传递,以及 out(输出)、const(常数). 前两者的区别,功能上的区别在于: 值传递过程中,对于参数的修改不影响源. 引用传递过程中,对于参数的修改,会直接修改源本身. 如果是以引用方式(即传递地址方式),前面需要添加关键字 var. 如: function TForm1.upadd(var na:intarray): Integer;问题描述中的代码,实现的就是值传递而非地址传递方式.

阳西县18170514412: Delphi一个数组如何复制另一个数组? -
贾胜普芬: Var A, B: Array Of Integer; Begin SetLength(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;

阳西县18170514412: delphi 求救delphi里面的socket的问题,如何传送数组如"
贾胜普芬: 不是不要救是赶快救;另外谁知道形如inttostr()这样的参数也行,最好是用结构来处理,谢谢~~~~

阳西县18170514412: 请教Delphi如何调用VC写的DLL,如何传递数组参数 -
贾胜普芬: 老版本的Delphi7,是无法传递像这样的ObjectList类型的参数的,新版本的DelphiXE可以. 我电脑上装了DelphiXE6,不算是最新的,他在生成WebService的声明文件时,可以正确解析出对方的ObjectList,而D7则不能. 像你这样的情况,无...

阳西县18170514412: delphi调用c#类库如何传递数组参数 -
贾胜普芬: 语言不一样,就用通用的格式传递,如xml,json.不是很复杂,就用自己的解析方式.如 一维数组,就用逗号分隔的字符串表示.

阳西县18170514412: delphi中怎么把 a:Array[1..20,1..35] of String;这个数组的数据传入数据库 -
贾胜普芬: var I: Integer; J: Integer; var S: String; for I:= 1 to 20 do for J:= 1 to 35 do begin S:= S + a[I][J]; //传入字符串S到数据库 end;

阳西县18170514412: 在DELPHI中如何进行数据传输? -
贾胜普芬: E_mail reci(restore database )E_mail send(backup select database to temp database)

阳西县18170514412: 如何向控件传递数组
贾胜普芬: 在DELPHI顶用VC开辟的控件,控件中有一函数须要传入一DOUBLE型数组用 procname1(array1);调用,在DELPHI中我定义 array1:array[0..100] of double在编译时总提示oleVariant 与array 类型不匹配怎么办?

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网