function IIF(condition:boolean; V:integer) : integer; begin result := 0; if condition then result:=V; end;
TEST := iif(critere1,1) + iif(critere2,2) + iif(critere3,4) + iif(critere4,8) .....
case of TEST // 0 : rien : pas de critère satisfait 1: exe1; // critère 1 2: exe2; // critère 2 3; exe3; // critères 1 et 2 (3 = 1+2) 4: exe4; // critère 3 5: exe5; // critère 1 et 3 (5 = 1+4) 6: exe5; // critère 2 et 3 (6 = 2+4) 7: exe5; // critère 1, 2 et 3 (7 = 1+2+4) ..... etc c'est du binaire pur end;
function ByteToBin(AValue: Byte): string; var I : Integer; begin I := 4; Result := '0000'; repeat if Odd(AValue) then Result[I] := '1'; Dec(I); AValue := AValue shr 1; until AValue = 0; end; function EmptyStrByte(AValue : string): Byte; begin if AValue = EmptyStr then Result := 0 else Result := 1; end; procedure TForm1.Button1Click(Sender: TObject); var CRT : string; CR1 : Byte; CR2 : Byte; CR3 : Byte; CR4 : Byte; begin CR1 := EmptyStrByte(Edit1.Text) shl 0; CR2 := EmptyStrByte(Edit2.Text) shl 1; CR3 := EmptyStrByte(Edit3.Text) shl 2; CR4 := EmptyStrByte(Edit4.Text) shl 3; CRT := ByteToBin(CR4 + CR3 + CR2 + CR1); case StrToInt(CRT) of 0000 : ShowMessage('Pas de critère'); 0001 : ShowMessage('Edit1'); 0010 : ShowMessage('Edit2'); 0011 : ShowMessage('Edit1 et Edit2'); 0100 : ShowMessage('Edit3'); 0101 : ShowMessage('Edit1 et Edit3'); 0110 : ShowMessage('Edit2 et Edit3'); 0111 : ShowMessage('Edit1 et Edit2 et Edit3'); 1000 : ShowMessage('Edit4'); 1001 : ShowMessage('Edit1 et Edit4'); 1010 : ShowMessage('Edit2 et Edit4'); 1011 : ShowMessage('Edit1 et Edit2 et Edit4'); 1100 : ShowMessage('Edit3 et Edit4'); 1101 : ShowMessage('Edit1 et Edit3 et Edit4'); 1110 : ShowMessage('Edit2 et Edit3 et Edit4'); 1111 : ShowMessage('Edit1 et Edit2 et Edit3 et Edit4'); end; end;
ce dont j'ai besoin c'est la façon d'agencer les critères avec des AND et des OR, je ne sais même pas quel opération logique je dois utiliser, est-ce un AND comme j'en ai donné l'exemple dans mon premier post, est-ce un OR, je ne sais pas,
if not critère1 and critère2 and not critère3 and critère4 then begin ... end;
if not critère1 then if critère2 then if not critère3 then if critère4 then begin ... end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question