错错提示:Null object reference at line 48 in clicked event of object cb_1 of w_fillinform 怎么办?

时间:2022-10-25 00:18:19
这是我的PB调试错误,我的 w_fillinform窗体上有个groupbox控件gb_1和commandbutton控件cb_1,gb_1上有个listbox控件list1,我想得到list1中的列表项目.
  在cb_1的clicked事件中有语句:str1=list1.text(1)   保存没错误```但运行cb_1单击事件时提示这个~~~晕呀`` 我想这个list1已经实例化了```但为什么会提示这个列```
   
   高手请问怎么办呀```

7 个解决方案

#1


语法本身没有错,还是没有取到OBJECT,建议仔细查一下代码

#2


按照你的表达,你的程序看上去是没有问题的。
应该和listbox控键的名称有关(list1),不妨删除控键,重新建立listbox控键(lb_1),然后在workspaces中右键点击w_fillinform对象,选择regenerate(重建)。
试试吧!要仔细检查哦!^-^

#3


我想是哪个引用不对? 因为list1在gb_1上```
        但我在cb_1的click事件中直接写的list1.text(1)```
    但这样写gb_1.list1.text(1)也错了```
     不晓得要怎么办才好~```
  我给你看源代码咯```楼上我的源代码中没有用list1名字``是reservedroomlistbox```


customerinfo newcustinfo
newcust= create customerclass
classroom r_room
r_room = create classroom
string teleno,mobileno,hadd,cadd
integer is_y,is_m,is_day,is_sex
is_y=integer(trim(yearlistbox.text))
is_m=integer(trim(monthlistbox.text))
is_day=integer(trim(daylistbox.text))

if (trim(sexlistbox.text)="男") then 
is_sex=1
else
   is_sex=0
end if 

newcustinfo.customerid=trim(st_customerid.text) //一卡通号码

newcustinfo.customername=trim(sle_customername.text)  //姓名

newcustinfo.customersex=is_sex  //性别

newcustinfo.customerage=integer(agelistbox.text)  //年龄
newcustinfo.customernation=trim(sle_nation.text)  //民族
newcustinfo.homeaddress=trim(sle_homeaddress.text) //家庭住址
newcustinfo.customercompany=sle_companyname.text //公司名称
newcustinfo.companyaddress=trim(sle_companyaddress.text) //公司地址

newcustinfo.bornyear=is_y //年
newcustinfo.bornmonth=is_m //月
newcustinfo.bornday=is_day //日

newcustinfo.mobilenumber=trim(sle_mobilenumber.text) //手机号码
newcustinfo.customertelephone=trim(sle_telephonenumber.text) //固定电话
newcustinfo.emailaddress=trim(sle_emailaddress.text) //邮箱地址
newcustinfo.personnumber=integer(trim(sle_personnumber.text)) //订房人数
newcustinfo.customercardno=sle_certification.text //证件号码
if reservedroomlistbox.text(1)<>"" then
 //integer i=1;
 boolean flag
 //for i=1 to reservedroomlistbox.totalitems( )
   flag=newcust.writecustomerinfo(newcustinfo)
   if flag then
  messagebox("提示:","宾客登记成功",exclamation!,ok!)
     close(this.getparent( ))
   end if 
string s_room 
   s_room=reservedroomlistbox.text(1)  //它提示就是这行有错误```注掉它就没事了```

    r_room.writedb(newcustinfo.customerid,mid(trim(newcustinfo.customerid),1,4),0)//mid(trim(newcustinfo.customerid),1,4)
else 
messagebox("提示","宾客登记失败,没有选择房间,请选择!",exclamation!,ok!)
end if 

return 1

#4


groupbox控键可以说就是一个装饰型的控键,所以这么写gb_1.list1.text(1)是没有必要的,这点可以肯定你的判断。

#5


按照你说的listbox控键对象你用"reservedroomlistbox"来引用它,那请回答下边问题。
if reservedroomlistbox.text(1)<>"" then   ----这句能通过么,step in调试了么?错误只有下边你说的那条么?
   boolean flag
   flag=newcust.writecustomerinfo(newcustinfo)
   if flag then
      messagebox("提示:","宾客登记成功",exclamation!,ok!)
      close(this.getparent( ))
   end if 
   string s_room 
   s_room=reservedroomlistbox.text(1)  //它提示就是这行有错误```注掉它就没事了```

#6


哪确实```但真的提示了这个错误呀`。
  而且是48行的哪个/
就是s_room=reservedroomlistbox.text(1)  
  而哪句没有提示错误~
 难道我的PB有错误?
   回去试试```

#7


我晕呀`  我把这两条语句写到最上面去```
      竟然没事了``
  
     有没有搞错```  算了```  我想这是PB的一个小小的缺陷```
   
    5楼的高手不信你也去试试呀`。
  我在别的机子上试也是一样的错误````但把它写到最上面就OK了`
     

#1


语法本身没有错,还是没有取到OBJECT,建议仔细查一下代码

#2


按照你的表达,你的程序看上去是没有问题的。
应该和listbox控键的名称有关(list1),不妨删除控键,重新建立listbox控键(lb_1),然后在workspaces中右键点击w_fillinform对象,选择regenerate(重建)。
试试吧!要仔细检查哦!^-^

#3


我想是哪个引用不对? 因为list1在gb_1上```
        但我在cb_1的click事件中直接写的list1.text(1)```
    但这样写gb_1.list1.text(1)也错了```
     不晓得要怎么办才好~```
  我给你看源代码咯```楼上我的源代码中没有用list1名字``是reservedroomlistbox```


customerinfo newcustinfo
newcust= create customerclass
classroom r_room
r_room = create classroom
string teleno,mobileno,hadd,cadd
integer is_y,is_m,is_day,is_sex
is_y=integer(trim(yearlistbox.text))
is_m=integer(trim(monthlistbox.text))
is_day=integer(trim(daylistbox.text))

if (trim(sexlistbox.text)="男") then 
is_sex=1
else
   is_sex=0
end if 

newcustinfo.customerid=trim(st_customerid.text) //一卡通号码

newcustinfo.customername=trim(sle_customername.text)  //姓名

newcustinfo.customersex=is_sex  //性别

newcustinfo.customerage=integer(agelistbox.text)  //年龄
newcustinfo.customernation=trim(sle_nation.text)  //民族
newcustinfo.homeaddress=trim(sle_homeaddress.text) //家庭住址
newcustinfo.customercompany=sle_companyname.text //公司名称
newcustinfo.companyaddress=trim(sle_companyaddress.text) //公司地址

newcustinfo.bornyear=is_y //年
newcustinfo.bornmonth=is_m //月
newcustinfo.bornday=is_day //日

newcustinfo.mobilenumber=trim(sle_mobilenumber.text) //手机号码
newcustinfo.customertelephone=trim(sle_telephonenumber.text) //固定电话
newcustinfo.emailaddress=trim(sle_emailaddress.text) //邮箱地址
newcustinfo.personnumber=integer(trim(sle_personnumber.text)) //订房人数
newcustinfo.customercardno=sle_certification.text //证件号码
if reservedroomlistbox.text(1)<>"" then
 //integer i=1;
 boolean flag
 //for i=1 to reservedroomlistbox.totalitems( )
   flag=newcust.writecustomerinfo(newcustinfo)
   if flag then
  messagebox("提示:","宾客登记成功",exclamation!,ok!)
     close(this.getparent( ))
   end if 
string s_room 
   s_room=reservedroomlistbox.text(1)  //它提示就是这行有错误```注掉它就没事了```

    r_room.writedb(newcustinfo.customerid,mid(trim(newcustinfo.customerid),1,4),0)//mid(trim(newcustinfo.customerid),1,4)
else 
messagebox("提示","宾客登记失败,没有选择房间,请选择!",exclamation!,ok!)
end if 

return 1

#4


groupbox控键可以说就是一个装饰型的控键,所以这么写gb_1.list1.text(1)是没有必要的,这点可以肯定你的判断。

#5


按照你说的listbox控键对象你用"reservedroomlistbox"来引用它,那请回答下边问题。
if reservedroomlistbox.text(1)<>"" then   ----这句能通过么,step in调试了么?错误只有下边你说的那条么?
   boolean flag
   flag=newcust.writecustomerinfo(newcustinfo)
   if flag then
      messagebox("提示:","宾客登记成功",exclamation!,ok!)
      close(this.getparent( ))
   end if 
   string s_room 
   s_room=reservedroomlistbox.text(1)  //它提示就是这行有错误```注掉它就没事了```

#6


哪确实```但真的提示了这个错误呀`。
  而且是48行的哪个/
就是s_room=reservedroomlistbox.text(1)  
  而哪句没有提示错误~
 难道我的PB有错误?
   回去试试```

#7


我晕呀`  我把这两条语句写到最上面去```
      竟然没事了``
  
     有没有搞错```  算了```  我想这是PB的一个小小的缺陷```
   
    5楼的高手不信你也去试试呀`。
  我在别的机子上试也是一样的错误````但把它写到最上面就OK了`