[gelöst] Anfängerfrage: Suche einzeilige IF Bedingung

28. Juli 2008 15:28

Hallo zusammen,

ist mir fast schon peinlich aber ich finde keine Antwort.
Suche die Kurzform für eine IF Bedingung.
Z.B in C++:

Code:
IF <Bedingung>
  //mach was wenn true
  TRUE;
ELSE
  //mach was wenn false
  FALSE;
end;


wird zu

<Bedingung> ? TRUE : FALSE;

Wie wird dieses Konstrukt in NAV formuliert?

Danke für eure Hilfe,
Tomas
Zuletzt geändert von Naviii am 4. August 2008 15:23, insgesamt 1-mal geändert.

28. Juli 2008 15:33

Hallo,


Code:
IF <Bedingung> THEN BEGIN
  //mach was wenn true
  TRUE;
END ELSE BEGIN
  //mach was wenn false
  FALSE;
END;

//Alternativ für nur eine Ausführungszeile in IF und ELSE Teil:
IF <Bedingung> THEN
  //mach was wenn true
  TRUE //hier kein ;
ELSE
  //mach was wenn false
  FALSE;


Gruß
Zuletzt geändert von Merlin am 28. Juli 2008 15:35, insgesamt 1-mal geändert.

28. Juli 2008 15:35

Code:
IF <Bedingung> THEN
  // <Code>
ELSE
  // <Code>


Wenn es mehrzeilig sein soll, dann kommt ein BEGIN und das zugehörige END; hinzu..

Code:
IF <Bedingung> THEN BEGIN
  // <Code>
  // <Code>
  // <Code>
END ELSE BEGIN
  // <Code>
  // <Code>
  // <Code>
END;


// ups zu langsam :P
Zuletzt geändert von 3TageWach am 30. Juli 2008 08:17, insgesamt 1-mal geändert.

28. Juli 2008 15:40

Ich meine, wenn es ein mehrzeiliges ELSE geben soll, muss noch ein "BEGIN" in Deine 2. CodeBox. Täusch ich mich? ^^

28. Juli 2008 15:54

Vielen Dank für die Antworten, aber irgendwie habt ihr mich falsch verstanden.

Es gibt in vielen Programmiersprachen als Alternative für die mehrzeilige Bedingung

Code:
IF (a == b)
  //mach was wenn TRUE
  b = 5;
ELSE
  //mach was wenn FALSE
  b = 0;
end;


die Möglichkeit, die "Kurzform" dazu zu verwenden:
Code:
(a == b) ? (b = 5) : (b = 0);


Meine Frage ist nur, ob es diese Alternative auch in NAV gibt, also mit dem "?" (Fragezeichen) als Abgrenzung der Bedingung und dem ":" (Doppelpunkt) als Trennung zwischen den Quellcodes, die bei TRUE und bei FALSE ausgeführt werden sollen.

Danke.

28. Juli 2008 15:58

Tatsächlich, voll verkehrt verstanden :P

Meines Wissens gibt es so etwas nicht in C/SIDE.

29. Juli 2008 12:58

das kürzeste ist tatsächlich eine konstruktion wie diese, wo wir Stau als Boolsche, Fahrzeit als Integer und Hinweis als Textvariable mit 12 Zeichen definiert haben:

Code:
IF Stau THEN Fahrzeit+=1 ELSE Hinweis:='Freie Fahrt!';

29. Juli 2008 13:22

Wobei diese Schreibweise in mehreren Punkten dem NAV-Styleguide NICHT entspricht ;-)

29. Juli 2008 13:24

schon klar aber kürzer geht nicht mehr wirklich ;-)

29. Juli 2008 23:30

Auch wenn Schumi's C/AL-Code nicht dem StyleGuide entspricht, so ist es die korrekte Antwort auf die gestellte Frage.

Die einzige mir bekannte Variante, welche auch StyleGuide-konform ist, währe folgende:
Code:
IF IrgendeineNochSoKomplexeBedingung THEN
  MeinBoolean := TRUE
ELSE
  MeinBoolean := FALSE;

Hier der StyleGuide-konforme Einzeiler:
Code:
MeinBoolean := IrgendeineNochSoKomplexeBedingung;

Natürlich geht es auch negiert:
Code:
MeinBoolean := NOT (IrgendeineNochSoKomplexeBedingung);


Fazit: StyleGuide-konforme Einzeler können nur einer Boolean-Variable zugewiesen werden.
Ohne StyleGuide geht (fast) immer Schumi's Vorschlag, sofern der Code in eine Zeile (132 Zeichen) passt.

Re: Anfängerfrage: Suche einzeilige IF Bedingung

4. August 2008 15:20

Tach zusammen,

vielen Dank für eure Vorschläge. War über`s WE nicht da, deshalb die etwas verspätete Antwort.
Nun weiß ich, dass es das gewünschte KOnstrukt in Nav nicht gibt.

Danke,
naviii