(Gast)
n/a Beiträge
|
AW: Anfängerfrage: Verknüpfungen
16. Dez 2016, 13:34
Kennt Dein Delphi schon IfThen?
Wenn nein:
Delphi-Quellcode:
function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer): Integer;
begin
if AValue then Result := ATrue else Result := AFalse;
end;
Delphi-Quellcode:
begin
b := ifThen(a = 1,2,b);
c := ifThen(a = 1,3,c);
end;
Die Variante von DeddyH etwas ausgebaut:
Delphi-Quellcode:
procedure ValuesByCondition(ACondition: Boolean;
var AWert1 : Integer; const ADefault1 : Integer;
var AWert2 : Integer; const ADefault2 : Integer);
begin
if not ACondition then exit;
AWert1 := ADefault1;
AWert2 := ADefault2;
end;
procedure TFormTest.ButtonTestClick(Sender: TObject);
var
a, b, c: integer;
begin
a := 0;
b := 0;
c := 0;
ValuesByCondition(a = 1, b, 2, c, 3);
ShowMessage(Format('a: %d, b: %d, c: %d', [a, b, c]));
a := 1;
ValuesByCondition(a = 1, b, 2, c, 3);
ShowMessage(Format('a: %d, b: %d, c: %d', [a, b, c]));
end;
Dadurch dann auch für andere Werte als "nur" 1, 2 und 3 als Einzeiler einsetzbar.
Delphi-Quellcode:
procedure TFormTest.ButtonTestClick(Sender: TObject);
var
a, b, c, z: integer;
begin
a := 0;
b := 47;
c := 11;
ValuesByCondition(a = 1, b, 2, c, 3); // keine Änderung, Bedingung nicht erfüllt
ShowMessage(Format('a: %d, b: %d, c: %d', [a, b, c]));
a := 1;
ValuesByCondition(a = 1, b, 2, c, 3); // Änderung, Bedingung erfüllt
ShowMessage(Format('a: %d, b: %d, c: %d', [a, b, c]));
a := 1;
ValuesByCondition(a = 1, b, b * 2, c, c - 1); // mit Ergebnis von Rechenoperationen
ShowMessage(Format('a: %d, b: %d, c: %d', [a, b, c]));
z := 2;
ValuesByCondition(z = 2, b, c, c, b); // Wertetausch
ShowMessage(Format('z: %d, b: %d, c: %d', [z, b, c]));
z := 0;
ValuesByCondition(c * 7 = 28, b, c, c, b); // Wertetausch bei zutreffendem Ergebnis einer Rechenoperation
ShowMessage(Format('c*7: %d, b: %d, c: %d', [c*7, b, c]));
end;
Geändert von nahpets (16. Dez 2016 um 13:34 Uhr)
Grund: Schreibfehler :-(
|