Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Syntax-Frage (if, else begin und end) (https://www.delphipraxis.net/99712-syntax-frage-if-else-begin-und-end.html)

Tommy1988 16. Sep 2007 15:05


Syntax-Frage (if, else begin und end)
 
Hallo, ich habe mir in den letzten Zwei Jahren einige Bücher über Delphi und die Programmierung damit
durchgelesen.

Viele Autoren verwenden meist nie begin und end. z.B. bei einer
if else- Abfrage.

Bei mir ist es jetzt so, da wo man kein begin und end braucht, verwende ich es trotzdem:
Delphi-Quellcode:
if TestVariable = True then
 begin
  // Eine Codezeile
 end else
 begin
 // Eine weitere Codezeile
 end;
In dem Fall könnte man das begin-end weglassen.

Meine Frage: Ist das eigentlich FALSCH was ich da mache?

mkinzler 16. Sep 2007 15:07

Re: Syntax-Frage (if, else begin und end)
 
Nein, warum sollte es falsch sein? eine Sequenz besteht entweder aus einem einzelnen Befehl oder wird von begin..end umschlossen.

alleinherrscher 16. Sep 2007 15:07

Re: Syntax-Frage (if, else begin und end)
 
Ne falsch is das nicht, nur etwas umständlich, wenn du jeweils nur eine Anweisung hast, brauchst du keinen begin und end block und du kannst auch schreiben:

Delphi-Quellcode:

if bedingung then
   eineanweisung(mitparametern)
else
   eineandereanweisung(mitparametern);

Tommy1988 16. Sep 2007 15:08

Re: Syntax-Frage (if, else begin und end)
 
Das ist mir klar ;)

Aber angenommen unter dem else ohne begin und end kommen noch viele weitere Codezeilen.

Dann finde ich es überichtlicher das, auch wenn es nur eine Zeile ist, es einzuschließen

mkinzler 16. Sep 2007 15:09

Re: Syntax-Frage (if, else begin und end)
 
Deshalb nehem ich normalerweise auch immer begin..end

Ralf Kaiser 16. Sep 2007 15:14

Re: Syntax-Frage (if, else begin und end)
 
Zitat:

Zitat von Tommy1988
Meine Frage: Ist das eigentlich FALSCH was ich da mache?

Nein auf keinen Fall. Letztendlich ist es eine Frage des persönlichen Stils (oder eventuell eine Frage eine firmeninternen Style-Guides)

Auch ich verwende grundsätzlich beginn..end da man dann schneller eine paar Anweisungen ergänzen kann. Ausserdem finde ich, dass es, korrekt eingerückt, "schöner" aussieht. Ohne begin..end "hängen einige Zeilen dann immer so unmotiviert in der Gegend rum :)

Kevin 16. Sep 2007 15:19

Re: Syntax-Frage (if, else begin und end)
 
Ich nehme gerne den begin/end-Block auch für nur eine Anweisung, da es für den Fall einer Erweiterung um weitere Zeilen einfacher ist. Letztendlich ist es natürlich nicht falsch und Geschmacksache.

Christian Seehase 16. Sep 2007 15:45

Re: Syntax-Frage (if, else begin und end)
 
Moin Zusammen,

also ich habe es mir so angewöhnt:
Wenn nur der then-Zweig in Frage kommt, und dort nur eine Anweisung folgt, kommt sie direkt hinter das then, also in die gleiche Zeile.
Ausnahme:
Die Zeile wird dann zu lang, sprich, unübersichtlich.
Dann mache ich es auch bei einer Zeile so, wie bei mehreren.

Werden mehrere Zeilen, oder auch ein else-Zweig benötigt benutze ich bei beiden immer begin/end

Also:

Delphi-Quellcode:
// Nur then, eine Anweisung, kurze Zeile
if <Bedingung(en)> then <Anweisung>

// Nur then, eine Anweisung, lange zeile oder mehrere Anweisungen
if <Bedingung(en)> then begin
  <Anweisung(en)>
end;

// Auch else
if <Bedingung(en)> then begin
  <Anweisung(en)>
end else begin
  <Anweisung(en)>
end;

@Tommy:
Was Du aber in keinem Falle machen solltest (auch wenn es nicht direkt falsch ist):

Vergleiche einen boolschen-Ausdruck niemals auf true oder false.

Also:
Delphi-Quellcode:
// statt = true
if Ausdruck then ...
// statt = false
if not Ausdruck then ...
Zum einen ist diese Variante i.d.R. lesbarer (vorausgesetzt die Bezeichner wurden entsprechend benannt ;-)), zum anderen kann man sich gerade bei = true eine Problem einhandeln.
true und false sind einfach nur Konstanten mit den Werten 1 (true) und 0 (false).
Üblicher Weise ist der Rückgabewert einer boolschen Funktion als 0 bei false (ok, passt) aber als <> 0 für true anzusehen.
Wenn eine Funktion also -1 oder 2 (mal als willkürliche Beispiele gewählt) als Rückgabewert liefert (um true zu signalisieren), und Du mit true (also 1) vergleichst, erhältst Du nicht das gewünschte Ergebnis.

DP-Maintenance 16. Sep 2007 15:46

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.

RavenIV 17. Sep 2007 08:03

Re: Syntax-Frage (if, else begin und end)
 
Zitat:

Zitat von Christian Seehase
Moin Zusammen,

also ich habe es mir so angewöhnt:

Delphi-Quellcode:
// Nur then, eine Anweisung, kurze Zeile
if <Bedingung(en)> then <Anweisung>

// Nur then, eine Anweisung, lange zeile oder mehrere Anweisungen
if <Bedingung(en)> then begin
  <Anweisung(en)>
end;

// Auch else
if <Bedingung(en)> then begin
  <Anweisung(en)>
end else begin
  <Anweisung(en)>
end;

Hast Du Dir mal den StyleGuide von Borland / CodeGear angeschaut?
Danach wäre Deine Version falsch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz