![]() |
Delphi-Version: 5
Anfängerfrage: Verknüpfungen
ich würde gerne fragen, ob es eine Möglichkeit gibt, das hier:
if a=1 then begin b:=2; c:=3; end; mit weniger Zeilen zu schreiben.. das hier zum Beispiel ist leider nicht möglich: if a=1 then b:=2 and c:=3; Hintergrund: ich muss diesen oberen code sehr oft implementieren und die ganzen "begins" und "ends" sind mir von der Übersicht her ein zu großer Nachteil.. |
AW: Anfängerfrage: Verknüpfungen
Höchstens mit:
Delphi-Quellcode:
...:cat:...
procedure ABC;
var A,B,C: Integer; procedure Check(); begin if A = 1 then begin B := 2; C := 3; end; end; begin ... Check; ... ... Check; ... ... Check; ... end; |
AW: Anfängerfrage: Verknüpfungen
ich suche eher sowas wie dieses "and" :) so klappt das leider nicht, weil der befehl nicht immer der gleiche ist.. (andere bedingungen andere Parameter etc.)
|
AW: Anfängerfrage: Verknüpfungen
oder ganz einfach in einer Zeile ;)
Delphi-Quellcode:
if a=1 then begin b:=2; c:=3; end;
Nicht schön, aber geht |
AW: Anfängerfrage: Verknüpfungen
Oder in der Richtung:
Delphi-Quellcode:
procedure ValuesByCondition(ConditionValue: integer; var First, Second: integer);
begin if ConditionValue = 1 then begin First := 2; Second := 3; end; end; procedure TFormTest.ButtonTestClick(Sender: TObject); var a, b, c: integer; begin a := 0; b := 0; c := 0; ValuesByCondition(a, b, c); ShowMessage(Format('a: %d, b: %d, c: %d', [a, b, c])); a := 1; ValuesByCondition(a, b, c); ShowMessage(Format('a: %d, b: %d, c: %d', [a, b, c])); end; |
AW: Anfängerfrage: Verknüpfungen
Delphi und
Zitat:
|
AW: Anfängerfrage: Verknüpfungen
Zitat:
...:cat:... |
AW: Anfängerfrage: Verknüpfungen
Zitat:
Daß sich jemand über diese Blockgrenzschlüsselwörter mockiert, lese ich das erste Mal in meinen inzwischen 11 Jahren, die ich im Internet wegen Pascal / Delphi aktiv bin. Immerhin sind diese Schlüsselwörter fett markiert. Diese Blockbildung findet eben nicht "von innen" über and-Verknüpfungen (was so auch nicht funktioniert, so können nur boolesche/logische Ausdrücke, aber keine Anweisungen verknüpft werden), sondern nur "von außen" über begrenzende Schlüsselwörter statt. Warum letzteres übersichtlicher als ersteres sein soll, verschließt sich mir. |
AW: Anfängerfrage: Verknüpfungen
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:
Die Variante von DeddyH etwas ausgebaut:
begin
b := ifThen(a = 1,2,b); c := ifThen(a = 1,3,c); end;
Delphi-Quellcode:
Dadurch dann auch für andere Werte als "nur" 1, 2 und 3 als Einzeiler einsetzbar.
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;
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz