Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Komponenteneigenschaften gehen verloren

  Alt 2. Nov 2012, 00:34
Zuerst einmal hilft es immer ungemein, den Code richtig zu formatieren:
Delphi-Quellcode:
function Formular1.starting : boolean;
var
  Indexwert, Zaehlung : byte;
begin
  Zaehlung := SpnEdtCount.Value;
  Indexwert := RdGrpOperator.ItemIndex;

  case ShowModal of

    mrOk :
      begin
        if not ( SpnEdtCount.Value > 5 ) and ( RdGrpOperator.ItemIndex <> - 1 )
        then
          starting := FALSE
        else
          starting := True;
      end;

    mrCancel :
      begin
        SpnEdtCount.Value := Indexwert;
        RdGrpOperator.ItemIndex := Zaehlung;
        starting := FALSE;
      end;
  end;
end;
Und schon sieht man etwas klarer ... und ich hätte folgende Fragen:
  1. Warum haben Indexwert und Zaehlung den Typen Byte ? Damit kannst du nur Werte von 0..255 speichern. Reicht das wirklich aus?
    Interessant wird es, wenn du z.B. den Wert 256 zuweist, daraus wird dann 0
  2. Der Wert von SpnEdtCount.Value wird in Zaehlung gespeichert und RdGrpOperator.ItemIndex in Indexwert - ok
    Bei Cancel werden diese gespeicherten Werte aber "verdreht" zurückgeschrieben ... ist das so gewünscht?

EDIT: Kleiner Optimierungstip:

Statt
Delphi-Quellcode:
    mrOk :
      begin
        if not ( SpnEdtCount.Value > 5 ) and ( RdGrpOperator.ItemIndex <> - 1 )
        then
          starting := FALSE
        else
          starting := True;
      end;
einfach
Delphi-Quellcode:
    mrOk :
      starting := ( SpnEdtCount.Value > 5 ) or ( RdGrpOperator.ItemIndex < 0 );
das hilft auch den Code besser zu verstehen

EDIT2:

Ich habe jetzt erst bemerkt, dass starting ja der Funktionsname ist und somit in deinem Code der Rückgabewert ist.
Für das bessere Codeverständnis wäre es ratsam statt den Funktionsnamen Result zu verwenden. Dann ist jedem auf den ersten Blick klar, dass hier der Rückgabewert der Funktion gemeint ist.
Delphi-Quellcode:
    mrOk :
      Result := ( SpnEdtCount.Value > 5 ) or ( RdGrpOperator.ItemIndex < 0 );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 2. Nov 2012 um 00:43 Uhr)
  Mit Zitat antworten Zitat