我可以在两次比较之间使用逻辑函数(和,或)吗
Am I able to use a logic function (and, or) between 2 comparisons
我不确定是否通常不可能在比较之间使用逻辑函数,或者我是否错误地使用了我的逻辑语句,因为当我将所有变量(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;
我尝试过使用 "and" 语句、"or" 语句,我也尝试过使用嵌套的 "if" 语句,但结果相同
您比较的是 TEdit 控件地址,而不是它们的内容。你需要比较一下他们的内容。
if (NewUsername.Text <> NewUsername2.Text) or (NewPass.Text <> NewPass2.Text) then
写类似
NewUsername <> NewUsername2
在这种情况下将始终具有值 true,因为这是两个不同的 TEdit 控件,它们的地址永远不会相同。
我不确定是否通常不可能在比较之间使用逻辑函数,或者我是否错误地使用了我的逻辑语句,因为当我将所有变量(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;
我尝试过使用 "and" 语句、"or" 语句,我也尝试过使用嵌套的 "if" 语句,但结果相同
您比较的是 TEdit 控件地址,而不是它们的内容。你需要比较一下他们的内容。
if (NewUsername.Text <> NewUsername2.Text) or (NewPass.Text <> NewPass2.Text) then
写类似
NewUsername <> NewUsername2
在这种情况下将始终具有值 true,因为这是两个不同的 TEdit 控件,它们的地址永远不会相同。