Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Herausfinden ob Breakpoint ist oder nicht - Wie?

  Alt 15. Jun 2012, 15:09
Was findest Du daran unschön? Wenn man auf RTTI verzichten will, könnte man das auch mit einer case-Abfrage in einer Funktion machen und auf die Konstante verzichten.
Delphi-Quellcode:
type
  TMeinTyp = (mtEins, mtZwei, mtDrei);

function TMyClass.GetTypeAsString(Typ: TMeinTyp): string;
begin
  case Typ of
    mtEins:
      Result := 'Typ Eins';
    mtZwei:
      Result := 'Typ Zwei';
    else
      Result := 'Typ Drei';
  end;
end;
Aber: wenn man den Typ einmal erweitert, weil ein neuer Zustand hinzugekommen ist, darf man nicht vergessen, die Funktion auch zu erweitern. Dem Compiler ist das schnurz, ob sie im Fall des neuen Zustandes auch das richtige Ergebnis liefert. Hat man aber wie von Dir gezeigt eine entsprechende Array-Konstante deklariert, muss diese im genannten Fall auch erweitert werden, sonst wird nicht kompiliert, da das Array nicht die richtige Elementanzahl aufweist.

Delphi-Quellcode:
type
  TMeinTyp = (mtEins, mtZwei, mtDrei);

const
  MYTYPESTRINGS: array[TMeinTyp] of string = ('Typ Eins', 'Typ Zwei', 'Typ Drei');

function TMyClass.GetTypeAsString(Typ: TMeinTyp): string;
begin
  Result := MYTYPESTRINGS[Typ];
end;
Ist doch prima, so kann man sich vor der eigenen Schusseligkeit schützen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat