请各位大哥大姐进来挑毛病!(20分)

  • 主题发起人 主题发起人 dajiangxu
  • 开始时间 开始时间
D

dajiangxu

Unregistered / Unconfirmed
GUEST, unregistred user!
我刚学delphi没几天,试着编写个简单的类。脑袋里面面向对象思想还没形成。请高手帮我看看下面的代码,指点一下我入门。非常感谢!
thuman=class
private
addr:string;
public
function getaddress(adr:string):string;
procedure showinf;
end;

function thuman.getaddress(adr:string):string;
begin
result:=adr;
end;
procedure thuman.showinf;
begin
showmessage(addr);
end;

var
m:thuman;
begin
m:=thuman.Create;
addr:=m.getaddress('aaaa'):string; //这边出错
procedure m.showinf;
m.Destroy;
end;
 
我知道很简单,请各位帮帮我啊!
 
addr:=m.getaddress('aaaa'):string; //这边出错
procedure m.showinf;
不知所云。
这是什么代码。逻辑有问题。
Addr 是类私有变量,外界不能直接访问。要想用的话,将addr放到public里。
然后改成这样:
addr:=m.getaddress('aaaa');
m.showinf;
 
var
m:thuman;
begin
m:=thuman.Create;
addr:=m.getaddress('aaaa');//:string; 这里没用 string;
m.showinf; //procedure m.showinf ; 这里 也不对。
m.Destroy; // 最好 用 m.Free
end;
 
就是学着写一个人类,传个地址进去显示出来就行了。
 
你没有写类名.Create,一般还有Destroy
constructor Create();
destructor Destroy; override;
 
真正的说也不是访问私有成员,美猜错的话应该编译器提示标识符addr没有定义
 
happycyp,不是说私有变量类的内部成员可以访问的吗?
 
dey-999,这边需要用到构造函数吗?
 
procman,addr在声明中已经定义成string类型了啊!
 
var
m:thuman;
begin
m:=thuman.Create;
addr:=m.getaddress('aaaa'):string; //这边出错
procedure m.showinf;
m.Destroy;
end;
你这段代码只在类的内部使用吗?创建类的实例,一般在外部单元使用。
这时,要使用类的成员,一般是:
m.addr :=m.getaddress('aaaa'):
你的思路最好理一下。
-------------
晕,我写错了。我改!
 
addr:=m.getaddress('aaaa')这儿显示以下错误:
[Error] Unit1.pas(43): '(' expected but ':=' found
 
happycyp,addr:=m.getaddress('aaaa'):string;这边改对了。但procedure m.showinf;
还是出错。提示错误:[Error] Unit1.pas(44): Statement expected but 'PROCEDURE' found
我是想通过一些简单的例子,形成面向对象思想。我刚入门,希望各位能耐心指教。非常感谢!
 
procedure m.showinf;
m.Destroy;
--->
m.ShowInf;
m.Free;
前面已经有N个人给你提出修改意见了,你为什么不看,俺晕。
 
happycyp,好了。谢谢你。请问free和destory有什么区别吗?还有在什么情况下使用构造函数啊?
 
Free是先判断对象是不是为nil 然后再释放,比较安全,你可以看下Free的源码。
构造函数加不加,看你需不需要在构造对象时,添加自己的一些设置,为成员设置一些初始值。如果不变,不用加。
 
谢谢你,happycyp.可不可以问你要个联系方式,向你请教问题。
 
happycyp@163.com
 
谢谢你!
 
多人接受答案了。
 
后退
顶部