我可以在2次比较之间使用逻辑函数(和,或)

问题描述 投票:-1回答:1

我不确定在比较之间是否通常不可能使用逻辑函数,或者我是否错误地使用了我的逻辑语句,因为当我将所有变量(NewUsername,NewUsername2,NewPass,NewPass2)设置为字符“hi”时,它会继续显示Application.MessageBox。

    procedure TNewUserFrm.ApplyBtnClick(Sender: TObject);
    begin
      if (NewUsername <> NewUsername2) or (NewPass <> NewPass2) then
      begin
        Application.MessageBox('The usernames or passwords do not match. Try again', 'Error');
      end
      else
      begin
        if not modFile.UsersDataSet.Active then modFile.UsersDataSet.Open;
        modFile.UsersDataSet.Append;
        modFile.UsersDataSet.FieldByName('Username').AsString := NewUsername.Text;
        modFile.UsersDataSet.FieldByName('Password').AsString := NewPass.Text;
        modFile.UsersDataSet.Post;
        NewUserFrm.Hide;
      end;
      NewUsername.Text := '';
      NewUsername2.Text := '';
      NewPass.Text := '';
      NewPass2.Text := '';
      ApplyBtn.SetFocus;
    end;

我尝试过使用“和”语句,“或”语句,我也尝试使用嵌套的“if”语句,但是会出现相同的结果

delphi logic delphi-xe
1个回答
7
投票

您正在比较TEdit控件地址,而不是它们的内容。你需要比较他们的内容。

if (NewUsername.Text <> NewUsername2.Text) or (NewPass.Text <> NewPass2.Text) then

写点像

NewUsername <> NewUsername2

在这种情况下,它将始终具有值true,因为它们是两个不同的TEdit控件,并且它们的地址永远不会相同。

© www.soinside.com 2019 - 2024. All rights reserved.