起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 405|回复: 17

【搞定】代码修改人员密码出错**

[复制链接]
发表于 2007-6-15 17:22:23 | 显示全部楼层 |阅读模式
zPerson.Password := Edit1.text;
Org.OrgSys.OrgSystem.SaveUnit(zPerson);

程序运行到Org.OrgSys.OrgSystem.SaveUnit(zPerson);
时会出错

1.jpg

18.79 KB, 下载次数: 226

回复

使用道具 举报

 楼主| 发表于 2007-6-15 17:42:48 | 显示全部楼层
虽然报错,但是密码已经被改变了
回复 支持 反对

使用道具 举报

发表于 2007-6-15 17:45:43 | 显示全部楼层
请把您创建对象zPerson和释放对象的整个过程的代码都传上来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-15 17:54:15 | 显示全部楼层
procedure TMMDHK.Button1Click(Sender: TObject);
var
  zPerson : TPerson;
begin
  if Assigned(Person) then
  begin
       if Edit1.text = '' then
       begin
         jsDialogs.showerror('请输入新密码', '出错了');
         exit;
       end
       else if Edit2.text = '' then
       begin
         jsDialogs.showerror('请输入确认新密码', '出错了');
         exit;
       end
       else if Edit1.text <> Edit2.text then
       begin
         jsDialogs.showerror('新密码和确认新密码不同', '出错了');
         exit;
       end;


       zPerson := TPerson.Create(Person.BizURL);
       //jsDialogs.showmsg(Person.ID, '返回信息');
       //jsDialogs.showmsg(zPerson.ID, '返回信息');
       zPerson.Password := Edit1.text;
       Org.OrgSys.OrgSystem.SaveUnit(zPerson);

       jsDialogs.showmsg('修改人员密码成功', '返回信息');

       close;
  end
  else
  begin
    jsDialogs.showerror('人员选择出错', '出错了');
    close;
  end;
end;

其中Person是父窗口传过来的TBizNode
回复 支持 反对

使用道具 举报

发表于 2007-6-15 18:20:24 | 显示全部楼层
建议先调试一下看zPerson是否创建成功,比如showmsg(zPerson.Password)等,另外楼主注意创建的对象要释放的,你的代码没有释放。这样可能导致指针错的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-18 08:58:22 | 显示全部楼层
zPerson应该是成功的,我中间注释掉的2行
//jsDialogs.showmsg(Person.ID, '返回信息');
//jsDialogs.showmsg(zPerson.ID, '返回信息');
已经打印出人员id信息了


我这里没有创建对象啊,哪些是需要释放的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-18 09:37:26 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-18 10:05:14 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2007-6-18 11:01:19 | 显示全部楼层
修改密码可以用TOperator的 ChangePassword
TOperator = class(TBizObject)
protected
  procedure ContextProvideParams(ContextNeed: Boolean; ContextIsolationLevel: string); override;
  function GetDisplayName: string; virtual;
public
  constructor create(AContext: TContext);
  function ChangePassword(NewPassword: string): Boolean; virtual;
  procedure Destroy; override;
  function FindPosition(DeptID: string; PositionID: string; PersonID: string; OperatorPositions: array of TOperatorPosition): Boolean;
  property DefaultPosition: TOperatorPosition; readonly;
  property DisplayName: string; readonly;
  property FuncItems: TOperatorFuncItems; readonly;
  property ID: string; readonly;
  property LoginID: string; readonly;
  property PositionCount: Longint; readonly;
  property Positions[Longint]: TOperatorPosition; readonly;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-18 11:26:51 | 显示全部楼层
但是TOperator不是指当前登陆人员吗?我是想改变任意一个人员的密码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 16:01 , Processed in 0.051582 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表