//声明
function test(var AValue:integer);boolean;
begin
Result := AValue>0;
AValue := AValue+1;
end;//调用
var
I : integer;
b : Boolean;
begin
i := -1;
b := test(i);
end;我想这样调用
var
b : Boolean;
begin
b := test(-1);
////////
//我记得有个函数(或其它关键字)可以把常量作为变参传递,忘了:(
end;不要告诉我改函数声明或定义变量再调用,这些都知道第一个回答者得100分+,提前有分
function test(var AValue:integer);boolean;
begin
Result := AValue>0;
AValue := AValue+1;
end;//调用
var
I : integer;
b : Boolean;
begin
i := -1;
b := test(i);
end;我想这样调用
var
b : Boolean;
begin
b := test(-1);
////////
//我记得有个函数(或其它关键字)可以把常量作为变参传递,忘了:(
end;不要告诉我改函数声明或定义变量再调用,这些都知道第一个回答者得100分+,提前有分
解决方案 »
- 国庆中秋散分
- 请问各位大侠,TFrame怎么使用啊?谢谢
- 再次正式恭喜……风……又差一分升级
- 怎么判断oracle里面的图片是什么格式的(bmp jpeg的两种)?并且如何动态取得里面的图片内容并显示出来?
- 关于query与ADOquery的区别(在线等,得到确切答复后马上给分,不好意思,偶很穷)
- 我是菜鸟
- 请问哪里有delphi开发人事工资管理的论文
- 關于QRBand的Expression屬性的一個問題﹐請大俠指教﹐急
- tadoquery控件的如何分页?要用程序控制,不能使用其它控件?
- 高手请进,其他勿入!解决了给200分!
- 如何调用位于不同项目中的表单?
- 作UDP报文接收程序的问题,请高手指点!
Types of actual and formal var parameters must be identical
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;function test(AValue:integer):boolean;
var
Form1: TForm1;implementation{$R *.DFM}
function test(AValue:integer):boolean;
begin
Result := AValue>0;
AValue := AValue+1;
end;procedure TForm1.Button1Click(Sender: TObject);
var
I : integer;
b : Boolean;
begin
i := -1;
b := test(-1);
end;{var
b : Boolean;
begin
b := test(-1);
end;
}end.
b := test(func(-1));
////这个不知道应该是怎么写的
要转换成什么类型,只消在前面加上类型名就行了,不过得注意数据长度应该相等:)150分了:)
我不希望我的代码中有任何可以省略的代码.
比如,我声明了一个常题,一个函数要用到它作为变参(不是我写的),而我又不要用这个函数的变参返回值,为了使用这个函数,我要声明一个无意义的变量!也许有点无理,或者变态,呵呵
既然有(我的印象中DELPHI有),为什么不用?代码够简单吧,楼上的某些朋友请测试再发言,不然,UP就够了
A: Integer = 1;
test(Integer((@A)^));
直接写数字我就不知道了
{$j+}
function test(AValue:integer):boolean;
begin
Result := AValue>0;
AValue := AValue+1;
end;
{$j-}procedure TForm1.Button1Click(Sender: TObject);
var
b : Boolean;
begin
b := test(-1);
end;
只好作个标记了.下周来看吧:)
b := test(-1);
你现在是在操作一个数啊,既不是常量,也不是变量!所以这个讲不通啊,不管如何,你定义一个变量也好,一个常量也好,也就给了程序一个回写的地址,但你现在给的是一个直接数,但function要求的是对相应地址操作,你的地址在哪?不通啊不通!
Delphi有没有这样一种机制,用一个关键字或函数,将一个值变为可操作的地址,当然,-1不可能成为可操作的地址,实际实现是,编译器为其分配一块内存让要传递变参的函数写,函数返回后再释放这块内存,而调用者不需要这个var参数的返回值,够明白了吧
function test(AValue:Pinteger):boolean;
begin
Result := AValue^>0;
AValue^ := AValue^+1;
end;procedure TForm1.Button1Click(Sender: TObject);
var
b : Boolean;
const
A: Integer = -1;
begin
b := test(@A);
end;
///-------------------------
type
Aa = record
A:integer;
PA: Pinteger;
end;
function test2(A: integer):aa;
begin
result.PA := @A;
result.A := A;
end;
function test3(A: aa):Pinteger;
begin
a.PA^ := A.A;
result := a.pa;
end;procedure TForm1.Button1Click(Sender: TObject);
var
b : Boolean;
begin
b := test(test3(test2(-1)));
end;
begin
Result := AValue>0;
AValue := AValue+1;
end;type
Aa = record
A:integer;
PA: Pinteger;
end;
function test2(A: integer):aa;
begin
result.PA := @A;
result.A := A;
end;
function test3(A: aa):Pinteger;
begin
a.PA^ := A.A;
result := a.pa;
end;
///-------------------------procedure TForm1.Button1Click(Sender: TObject);
var
b : Boolean;
begin
b := test1(test3(test2(-1))^);
end;
i: Integer;
p: Pointer;
end;function test1(var AValue:integer):boolean;
begin
ShowMessage(IntToStr(AValue));
end;function TForm1.GETVAR(A: INteger):TIP;
begin
result.i := a;
result.p := @result;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Test1(TIP((GETVAR(1).p)^).i);
end;
Delphi要是能直接 @FuncName(xx) 就好了 ...就不用这样费心构造一个结构体
begin
ShowMessage(IntToStr(AValue));
end;function GETVAR5(A: Integer):Pinteger;
const
i : integer = 0;
begin
integer((@i)^) := A;
result := @i;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
Test5(GETVAR5(3)^);
end;
begin
ShowMessage(IntToStr(AValue));
end;function GETVAR5(A: Integer):Pinteger;
const
i : integer = 0;
begin
i := A;
result := @i;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
Test5(GETVAR5(3)^);
end;这样也就可以了不过搞来稿去楼主也不是要这样的效果阿起码不通用,换个类型就要换个函数
此处报错您如何解决的??请教