说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

一个关于自定义类的问题,请帮助!

编辑:说三道四文库 发布时间:2018-01-22 04:12
HTML文档下载 WORD文档下载 PDF文档下载
我在Unit1中定义了一个类:
  type Tuserinfo=class(TObject)
     public
         username:string;
  end;
  var userinfo:Tuserinfo;

然后在unit2中引用了unit1,在button1中写入:
      userinfo := Tuserinfo.create;
      userinfo.username := 'admin';
      showmessage(userinfo.username);//正常

然后在Unit3中引用了unit1和unit2
     showmessage(userinfo.username);//报错,
请问是怎么回事!

我顶一下
因为在unit2中,你创建了Tuserinfo的实例,而在在unit3中,你没创建,所以会报错
代码拿来一看!
还有就是记得create了后还要free
我不覺得有錯,除非你是沒用 form2 先創建 實例,就直接用 form3 showmessage了.
错误信息贴出来先

      userinfo := Tuserinfo.create;
      
你在Button1事件当中才创建该类的实例,在Unit3当中只有创建后才能用。
我的unit1中的定义都是在interface中定义的,包括var userinfo:Tuserinfo;所以我认为unit3中不需要在创建,我的这个userinfo是记录用户信息的,所以一次创建以后,要在所有的单元引用!错误代码是:
access violation at address 00404500 in module 'project1.exe'.Read of address 00000026
showmessage(form2.userinfo.username);
不行,我的userinfo是定义在接口(interface)中的,不属于form2,不能这样用!
同意!

你确认是在Button1按了之后再ShowMessage的吗?  不然没有创建, 当然会报错.

----------
回复人: PrgmLover(爱国者) ( ) 信誉:100  2003-09-17 21:59:00  得分:0 
 
 
  
      userinfo := Tuserinfo.create;
      
你在Button1事件当中才创建该类的实例,在Unit3当中只有创建后才能用。
  
 
但是我的userinfo是一个全局性的实例,定义在接口中,如果我在每个单元都重新创建,那么我的数据岂不是丢失了,我需要一次创建,然后在每个单元都调用该类中的数据!
这个错误信息确实是因为对象没有创建!
建议,如果在调用方法之前这个对象有可能还没创建,那么调用之前用Assigned(userinfo)函数检验一下。
大家告诉我该怎么改,我的目的是建一个类,然后在所有地方调用这个类,它作为一个公共类使用,因该怎么办!苦恼中
將訪類移到一公共的 unit中,然後在裹面創建,我估計你還是沒創建就使用出的錯!
注意, 你说不是类, 应该是实例.

可以在initialization section里创建. 在finalization section里析构.

回复人: iazxq(不吃皮蛋) ( ) 信誉:99  2003-09-18 12:14:00  得分:0 
 
 
  大家告诉我该怎么改,我的目的是建一个类,然后在所有地方调用这个类,它作为一个公共类使用,因该怎么办!苦恼中
  
 
我已经搞定了,谢谢大家的参与
VB创建位图菜单 VB创建无 Icon 的窗口 打开 Win95 的创建快捷方式窗口-VB资料 打印机技巧 -VB资料 带有历史记录功能的菜单-VB资料 用WEBLOGIC,如何才能做到在让服务定时启动和关闭服务,再线等待, 刚才结贴的问题没有解决,还是删除30分钟以前的新闻怎么写 请教关于TreeView的一个事件 关于表里ID恢复初始值的请教? 贴这首歌的歌词的兄弟,100分独得!广东的兄弟有优势,上海的高手也挺多。东北的兄弟靠你们了! 我想追一个女孩,请水友们帮我出主意,谢谢! [help]关于参数和相关软件路径设置的问题 汉字编码问题? 如何给System.Diagnostics.Process.StartInfo.Arguments属性设置带空格的值? 高中向量两道基础题两道题:1.已知|a|=5,b在 已知已知a⊥b且丨a丨=2,丨b丨=1,若对两个不 |a|=3,|b|=4,(a+b)×(a+3b)= a=(1,1)是单位向量吗?为什么那d=(√2/2 一道基础的高中向量题!设 u向量 = (1,2) 编写程序,计算并输出下面级数前n项(n=20)的部 编写程序,计算并输出下面级数中前n(设n=20)项 1*2*3+2*3*4+3*4*5+.n*(n+1 若1/9 日本5年销毁3.4万防卫机密文件 国安倍视察伊豆大岛灾情 拟建立热线联络叙利亚提交销毁化武计划 时间符合相关瑞穗银行公布涉黑贷款调查报告 否认组“深度学习”慧眼识人 中科院团队夺百安吉:干群结对办实事瑞安3500多名岛民告别柴油机发电生郴州地产引资726亿元向问题“叫板” 让群众“叫好”筑五道“哨所” 保“入口”安全重生之敛财全球网游之追夫记和大明星的婚后生活无限随机元素奥妙兰州中川机场旅游歌乐山旅游康多峡旅游黄龙山旅游九甸峡旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘