Einzelnen Beitrag anzeigen

SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#6

AW: Kontextsensitive Hilfe / biHelp-Button trotz Minimize-Button?

  Alt 20. Dez 2015, 14:48
Man könnte es umschaltbar machen:
Hast du nicht gelesen, was ich geschrieben habe, oder bist du einfach nur stur?
Erstens ist [biSystemMenu,biMinimize,biHelp] - [biMinimize] sinnlos, da kannst du gleich [biSystemMenu,biHelp] schreiben.
Zweitens lass das Application.Terminate da weg, wenn schon dann Close, aber beides ist unnötig!


if switched=TRUE then Das ist übrigens schlechter Stil, man sollte Boolsche Werte niemals per "=" auf True prüfen, sonst kann man sich schwer zu findende Bugs einfangen!
Hintergrund: "False" ist definiert als = 0, "True" ist logischerweise "not False", d.h. <> 0. Als Konstante ist "True" jedoch als 1 definiert (jedenfalls für den Standardtyp "Boolean", für die Typen ByteBool, WordBool, LongBool ist es -1, das ignorieren wir mal; der Compiler konvertiert normalerweise automatisch richtig zwischen diesen Typen).

Für Anweisungen wie if Switched then erzeugt der Delphi-Compiler Code, der auf <> 0 prüft (korrekt für alle Boolschen Typen und Werte).
Für Anweisungen wie if Switched = True then erzeugt der Delphi-Compiler für den "Boolean"-Typ Code, der auf = 1 prüft und das kann Probleme geben!
Kleiner Test:
Delphi-Quellcode:
procedure BooleanTest;
var
  B: Boolean;
begin
  Byte(B) := 2;
  // B ist <> 0, d.h. entspricht logisch "True"... wird aber NICHT bei "B = True" erkannt!
  // prüft B = 1: SCHLECHT!
  if B = True then ShowMessage('B = True');
  // prüft B = 0: OK, aber schlechter Stil
  if B = False then ShowMessage('B = False');
  // prüft B <> 0: korrekt!
  if B then ShowMessage('B *is* True!');
  // prüft B = 0: korrekt!
  if not B then ShowMessage('B *is NOT* True!');
end;
Zugegeben, das Schreiben eines anderen Wertes als 0 oder 1 in einen Boolean-Typ per Typecast hier ist etwas gekünstelt, aber wenn man Third-Party-Code benutzt, der nicht in Delphi geschrieben wurde, kann das durchaus mal vorkommen.

Geändert von SMO (20. Dez 2015 um 15:34 Uhr)
  Mit Zitat antworten Zitat