如此简单的问题错在那里了?(100分)

  • 主题发起人 主题发起人 l0f
  • 开始时间 开始时间
L

l0f

Unregistered / Unconfirmed
GUEST, unregistred user!
我在UNIT2中定义了一个类
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
Type Tmyclass = Class
private
msg:String;
Public
procedure Showmsg(var s:String);
end;
implementation
procedure Tmyclass.Showmsg(var s:String);
begin
msg:=s;
showmessage(msg);
end;
end.
在UNIT1中调用,可是出错!
procedure TForm1.Button1Click(Sender: TObject);
var test:Tmyclass;
begin
test:=Tmyclass.Create;
test.Showmsg('sdf');//这里出错无法赋值
end;
=============
请问错在那里了?
 
Showmsg的參數為var s:String是否應該用變量類型調用含數呢
 
var s 的意思是可以通过过程或函数改变变量s的值,象你这个情况,没必要加var,直接
procedure Showmsg(s:String);
就可以了。实在要用,下面
test.Showmsg('sdf');
这一句改一下:
d:=sdf;
test.showmessage(d);
 
说得对!
楼上说的好。
你没有必要哪样用!
 
好像你这样定义的类, 这样使用不行的。

类必须要从TObject或其它类继承。
具体我没测试,晚上有时间再看
 
刚学DELPHI大家帮个忙,分不是问题!
 
多人接受答案了。
 
是这样的:
在你的类的函数 procedure Showmsg(var s:String);中用了var
这时候你的调用过程test.Showmsg('sdf');中参数必须要用变量。
修改方法1。
Type Tmyclass = Class
private
msg:String;
Public
procedure Showmsg(s:String););//去掉var
end;
implementation
procedure Tmyclass.Showmsg(s:String);//去掉var
begin
msg:=s;
showmessage(msg);
end;
end.

修改方法2。
procedure TForm1.Button1Click(Sender: TObject);
var test:Tmyclass;
tmpStr :String;
begin
tmpStr:='sdf';
test:=Tmyclass.Create;
test.Showmsg(tmpStr);//这里用变量
end;

建议用第1种方法。
使用var 主要为了调用过程后,把变化后的变量输出来

我讲明白了吗?


 
哈哈,我还在给你解答呢,你就结帖了
 
后退
顶部