unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
Function DelSpace(var str: string): string;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
Function TForm1.DelSpace(var str: string): string;
var
i : integer;
begin
i := pos(' ',str);
while i > 0 do
begin
Delete(str,i,1);
i :=pos(' ',str);
end;
result := str;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.DelSpace(Edit1.Text);
end;
end.為什么報如下 ERROR:[Error] Unit1.pas(47): Types of actual and formal var parameters must be identical
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
Function DelSpace(var str: string): string;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
Function TForm1.DelSpace(var str: string): string;
var
i : integer;
begin
i := pos(' ',str);
while i > 0 do
begin
Delete(str,i,1);
i :=pos(' ',str);
end;
result := str;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.DelSpace(Edit1.Text);
end;
end.為什么報如下 ERROR:[Error] Unit1.pas(47): Types of actual and formal var parameters must be identical
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
解决方案 »
- ●●谁有摄像头CYUSBCAM.DLL的调用说明或者例子代码,万分感激!
- 你好:我想编个能把指定进程的整个内存读出来以16进制来显示的程序.
- 小弟有一关于WIN2K服务程序跟其它应用程序通信的问题,想请教一下各位高手!
- 怎么样在程序中实现类似OFFICE和瑞星中那种动画提示(就像小孙悟空和那个杀毒的狮子?)
- delphi连接SQL Server2000网络怎么设置
- 如何关掉其它程序?
- 各位大侠,小弟想做个ActiveX控件,不知从何下手?
- 大哥 大姐 快来帮忙,小弟在线等待!!!
- 数据类型的问题?
- Delphi 使对象透明,擦除后显示
- fastreport中修改字体时的问题
- !!!请高手指点 XPMenu 的工作原理!!!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Function DelSpace(var str: string): string; //******应该声明在这里****
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
Function TForm1.DelSpace(var str: string): string;
var
i : integer;
begin
i := pos(' ',str);
while i > 0 do
begin
Delete(str,i,1);
i :=pos(' ',str);
end;
result := str;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.DelSpace(Edit1.Text);
end;
end.
真正的原因是:
DelSpace(var str: string): string
这个函数要求以引用方式传递一个字符串,而不是值传递(注意VAR修饰),当一个函数要求的参数是引用传递时,不能将诸如Edit1.Text这样的冬冬传递给它,正确的做法应该是:
procedure TForm1.Button1Click(Sender: TObject);
var
s: String;
begin
s := Edit1.Text;
Form1.DelSpace(s);
Edit1.Text := s;
end;