Anweisungen

Anweisungen sind ein oder mehrere Codezeilen gefolgt von einem Strichpunkt. Einfache Ausdrücke haben ein Semikolon, während zusammengesetzte Anweisungen mehr als ein Semikolon haben und folglich aus mehreren einfachen Anweisungen bestehen.

Hier ist eine einfache Anweisung:

A := B;

Hier ist eine zusammengesetzte (oder strukturierte) Anweisung:

begin
  
B := C;
  A := B;
end;

Einfache Anweisungen

Eine einfache Anweisung enthält einen einzelnen Strichpunkt. Wenn es nötig ist, die Anweisung auf mehrere Zeilen zu verteilen, rücken Sie die zweite Zeile zwei Leerstellen mehr ein als die vorherige Zeile:

MyValue :=
    MyValue + (SomeVeryLongStatement / OtherLongStatement);

Zusammengesetzte Anweisungen

Zusammengesetzte Anweisungen enden immer mit einem Strichpunkt, außer sie stehen direkt vor einer end-Anweisung. In diesem Fall wäre der Strichpunkt optional.

begin
  
MyStatement;
  MyNextStatement;
  MyLastStatement  
// Semikolon optional
end;

Zuweisungen und Ausdrucksanweisungen

Jede Zeile sollte höchstens eine Anweisung beinhalten. Z. B.:

a := b + c; Inc(Count);      // FALSCH
a := b + c;                  // RICHTIG
Inc(Count);                  // RICHTIG

Deklaration lokaler Variablen

Lokale Variablen sollten in "Camel Caps" geschrieben sein, d.h. sie sollten mit einem Großbuchstaben beginnen und jedes enthaltene Wort als erstes einen Großbuchstaben haben. Beginnen Sie Variablen nicht mit einem F, wie es bei der Deklaration von Feldern in Klassendeklarationen der Fall ist.

var
  
MyData: Integer;
  MyString:
string;

Sie können mehrere Variablen desselben Typs in einer Zeile deklarieren:

var
  
ArraySize, ArrayCount: Integer;

Dieses Vorgehen wird für Klassendeklarationen nicht empfohlen. Dort sollte jedes Feld in einer eigenen Zeile zusammen mit seinem Typ aufgeführt werden.

Array-Deklarationen

Hier sollte immer vor der geöffneten Klammer "[" und nach der schließenden "]" ein Leerzeichen stehen.

type
  
TMyArray = array [0..100] of Char;

if-Anweisung

if-Anweisungen sollten immer mindestens in zwei Zeilen stehen.

Beispiel:

// FALSCH
  
if A < B then DoSomething;

  
// RICHTIG
  
if A < B then
    
DoSomething;

Setzen Sie in zusammengesetzten if-Anweisungen jedes Element, das Anweisungen voneinander trennt in eine neue Zeile:

// FALSCH
  
if A < B then begin
    
DoSomething;
    DoSomethingElse;
  
end else begin
    
DoThis;
    DoThat;
  
end;

  
// RICHTIG
  
if A < B then
  begin
    
DoSomething;
    DoSomethingElse;
  
end
  else
  begin
    
DoThis;
    DoThat;
  
end;

Hier noch einige Möglichkeiten, die als gültig angesehen werden:

// RICHTIG
  
if Condition then
  begin
    
DoThis;
  
end else
  begin
    
DoThat;
  
end;

  
// RICHTIG
  
if Condition then
  begin
    
DoThis;
  
end
  else
    
DoSomething;

  
// RICHTIG
  
if Condition then
  begin
    
DoThis;
  
end else
    
DoSomething;

Eine, die in Ungnade gefallen ist, aber eine ehrenvolle Erwähnung verdient hat:

if Condition then
    
DoThis
  
else DoThat;

for-Anweisung

Beispiel:

// FALSCH
  
for i := 0 to 10 do begin
    
DoSomething;
    DoSomethingElse;
  
end;


  
// RICHTIG
  
for i := 0 to 10 do
  begin
    
DoSomething;
    DoSomethingElse;
  
end;

while-Anweisung

Beispiel:

// FALSCH
  
while x < j  do begin
    
DoSomething;
    DoSomethingElse;
  
end;


  
// RICHTIG
  
while x < j do
  begin
    
DoSomething;
    DoSomethingElse;
  
end;

repeat-until-Anweisung

Beispiel:

// RICHTIG
  
repeat
    
x := j;
    j := UpdateValue;
  
until j > 25;

case-Anweisung

Beispiel:

// RICHTIG
  
case Control.Align of
    
alLeft, alNone: NewRange := Max(NewRange, Position);
    alRight: Inc(AlignMargin, Control.Width);
  
end;


  
// RICHTIG
  
case x of

    
csStart:
      
begin
        
j := UpdateValue;
      
end;

    csBegin: x := j;

    csTimeOut:
      
begin
        
j := x;
        x := UpdateValue;
      
end;

  
end;

  
// RICHTIG
  
case ScrollCode of
    
SB_LINEUP, SB_LINEDOWN:
      
begin
        
Incr := FIncrement div FLineDiv;
        FinalIncr := FIncrement
mod FLineDiv;
        Count := FLineDiv;
      
end;
    SB_PAGEUP, SB_PAGEDOWN:
      
begin
        
Incr := FPageIncrement;
        FinalIncr := Incr
mod FPageDiv;
        Incr := Incr
div FPageDiv;
        Count := FPageDiv;
      
end;
  
else
    
Count := 0;
    Incr :=
0;
    FinalIncr :=
0;
  
end;

try-Anweisung

Beispiel:

// RICHTIG
  
try
    try
      
EnumThreadWindows(CurrentThreadID, @Disable, 0);
      Result := TaskWindowList;
    
except
      
EnableTaskWindows(TaskWindowList);
      
raise;
    
end;
  
finally
    
TaskWindowList := SaveWindowList;
    TaskActiveWindow := SaveActiveWindow;
  
end;