AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Casts - is, as, Assert

Ein Thema von uligerhardt · begonnen am 4. Feb 2010 · letzter Beitrag vom 4. Feb 2010
Antwort Antwort
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.433 Beiträge
 
Delphi 12 Athens
 
#1

Re: Casts - is, as, Assert

  Alt 4. Feb 2010, 09:51
Zitat von uligerhardt:
Wenn du so argumentierst, darfst du aber gar keine Assertions verwenden oder musst deine Anwendung mit eingeschalteten Assertions ausliefern..
Darum meinte ich ja, daß dieses nicht unbedingt ein optimaler Weg ist, um eventuelle Fehler abzuprüfen.

hmmmm, sowas geht leider nicht, da man hierfür ja den Typ vom Check-Parameter als Result bräuchte.
Delphi-Quellcode:
Function OCheck(O: TObject; Check: TClass): {TObject}; Inline;
  Begin
    Assert(O is Check);
    Result := O;
  End;
Delphi-Quellcode:
Function OCheck(O: TObject; Check: TClass): {TObject}; Inline;
  Begin
    {$IFOPT C+}
      If Assigned(O) Then
        Raise EAssertionFailed.CreateFmt('Object $%.8x "%s" is not %s',
          [Integer(O), O.ClassName, Check.ClassName])
      Else Raise EAssertionFailed.CreateFmt('Object (nil) is not %s', [Check.ClassName]);
    {$ENDIF}
    Result := O;
  End;

Aber wieso Aufwand?
Wenn du einmal ein Assert(Sender is TButton) an den Anfang der Prozedur stellt, dann brauchst du danach doch nichts mehr machen?

Delphi-Quellcode:
Procedure X(Obj: TObject);
  Var O: TButton absolute Obj:

  Begin
    Assert(Obj is TButton);
    ...
    O.Caption := 'ich bin ein Button';
    ...
  End;
Dieses prüft nur wärend der Programmierpfase und mit aktiven Assertions.

Wobei ich es meißt eher so mach:
Delphi-Quellcode:
Procedure X(Obj: TObject);
  Var O: TButton absolute Obj:

  Begin
    If Obj is TButton Then Begin
      ...
      O.Caption := 'ich bin ein Button';
      ...
    End Else {mach was, wenn es kein Button ist};
  End;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz