Dạng tổng quát của câu lệnh điều kiện là:
NẾU "logic biểu" THEN. .. ELSE ...
"Biểu thức logic" là bất kỳ biểu thức boolean boolean. Biểu thức boolean là một biểu thức có thể được đánh giá là TRUE hoặc FALSE.
Biểu thức boolean có thể được tạo bằng cách sử dụng toán tử so sánh và toán tử boolean.
Toán tử so sánh:
= equals
<> not equals
> greater than
>= greater than or equals
< less than
<= less than or equals
Set Toán tử so sánh:
= equals
<= returns true, if set1 is a subset of set2
>= returns true, if set1 is a superset of set2
in returns true, if an element is in the set
toán tử Boolean:
AND logical and
OR logical or
NOT logical not
XOR logical exclusive disjucntion
Ví dụ:
IF A = 10 THEN ...
IF A >= B THEN ...
IF C or D THEN ... (Note: C and D have to be logical, i.e. TRUE or FALSE)
IF NOT E THEN ... (Note: E has to be logical, i.e. TRUE or FALSE)
C, D và E có thể được thay thế bằng bất kỳ biểu thức logic, ví dụ:
IF (edit1.text = '') OR (ISEMPTY(edit2.text)) THEN ...
IF NOT checkbox1.checked THEN ...
Lưu ý rằng biểu thức logic có thể được xây dựng từ các biểu thức logic đơn giản hơn bằng cách sử dụng các toán tử logic, ví dụ:
IF (A = 10) AND (A >= B) THEN ...
IF NOT ((A = 10) AND (A >= B)) THEN ...
Lỗi thường gặp khi viết biểu thức logic không chú ý đến ưu tiên của toán tử (toán tử nào được đánh giá đầu tiên). Các toán tử logic có độ ưu tiên cao hơn toán tử so sánh, ví dụ:
IF A = 10 OR A >= B THEN ...
Trên đây là sai vì Delphi cố gắng để đánh giá
10 OR A
đầu tiên, thay vì
A = 10
. Nếu bản thân A không phải là một biểu thức logic, thì lỗi xảy ra.
Giải pháp là bằng cách sử dụng dấu ngoặc, vì vậy trên NẾU ... THÌ ... nên được viết như sau:
IF (A = 10) OR (A >= B) THEN ...
Đối với kiểm tra 3 chỉnh sửa điều khiển, báo cáo kết quả điều kiện trở thành:
IF (Edit1.text <> '') AND (Edit2.text <> '') AND (Edit3.text <> '') THEN ...
Lưu ý: Chủ đề hơi tắt, nhưng có liên quan. Các thành phần miễn phí TJvValidators, TJvValidationSummary và TJvErrorIndicator từ Jedi JVCL project cung cấp một cơ chế xác nhận hợp lệ.
Mọi ngôn ngữ lập trình mà tôi biết và hơn 200, có một dạng logic boolean, liên quan đến các phép toán AND, OR và NOT. Nếu bạn chưa từng thấy, bạn thực sự cần đọc một cuốn sách. Trong thực tế, nếu bạn đã làm nó trong C# tại sao không chỉ thử nó trong delphi? Sự khác biệt duy nhất là trong dấu ngoặc đơn Delphi không phải lúc nào cũng được yêu cầu với câu lệnh IF. Nhưng khi thực hiện so sánh bình đẳng, bạn nên viết 'if (a = b) hoặc (c = d)' chẳng hạn. –
Bổ sung. bạn cũng cần xem xét rằng có một số điều kiện cần phải được nhóm trong dấu ngoặc đơn như ((a = x1) và (b = y1)) hoặc ((a = x2) và (a = y2)) sau đó làm điều gì đó. – XBasic3000