AGB  ·  Datenschutz  ·  Impressum  







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

Null als Property

Ein Thema von IntelliSoft · begonnen am 8. Apr 2021 · letzter Beitrag vom 9. Apr 2021
Antwort Antwort
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Null als Property

  Alt 8. Apr 2021, 10:50
Geplant war/ist viel ...
Markus Kinzler
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Null als Property

  Alt 8. Apr 2021, 12:24
Ja da habe ich mich auch schon gefragt was daraus geworden ist. Das sollte doch glaube ich in 10.3 (oder sogar schon in 10.2.x) eingeführt werden und wurde dann kurzfristig wieder rausgenommen. Leider hat man seit da nichts mehr dazu gelesen. Mich würde schon auch interessieren wie es damit weiter geht oder ob das komplett gestorben ist. Hatte aber selber auch noch garnie den Bedarf dafür, weil man das auch anders lösen kann.

An den OP: Wieso definierst du denn nicht einfach, dass 0 kein gültiger Wert ist, also genau das was du ja schreibst. Wenn Stärke2 = 0 ist entspricht das deinem Null. Beim setzen des Property Achse prüfst du den Wert von Stärke2 und änderst den Wert von Achse (das Klassenfeld FAchse) nur wenn Stärke2 <> 0 ist. Mit einem SetAchse/GetAchse des Proberties kannst du das problemlos umsetzen. Die Achse initialiserst du natürlcih mit ienem ungültigen Wert wie z.B. -1, was dann für die Achse dem Null entsprechen würde.

Delphi-Quellcode:
type
  TMyObject = class
  private
    FAchse: Integer;
    FStaerke1,
    FStaerke2: Double;
    procedure SetAchse(AValue: Double);
    function GetAchse: Double;
  public
    constructor Create; virtual;
    property Achse: Double read GetAchse write SetAchse;
    property Staerke1: Double read FStaerke1 write FStaerke1;
    property Staerke2: Double read FStaerke2 write FStaerke2;
  end;

constructor TMyObject.Create;
begin
  FAchse := -1;
  // Staerke1 + 2 werden vom Compiler mit 0 initialisiert
end;

function TMyObject.GetAchse: Double;
begin
  if FStaerke2 <> 0 then
    Result := .... // deine Achsenberechnung
  else
    Result = -1; // oder eine Exception auslösen je nach Bedarf
end;

procedure TMyObject.SetAchse(AValue: Double);
begin
  // hier kanns du irgendwas machen, was beim setzen des Achse Properties passieren soll.
  // z.B. überprüfen ob der Wert einem gültigen Wert für Achse entspricht.
end;

Geändert von Rolf Frei ( 8. Apr 2021 um 13:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Null als Property

  Alt 8. Apr 2021, 13:02
Single/Double/Float kennen als "Werte" auch NaN, Infinity und NegInfinity.

Delphi-Referenz durchsuchenNaN (not a number) kann man hier als "NULL" (kein Wert / keine Zahl) verwenden.


Über die Fehlerbehandlung der FPU auch steuern, wie bei Berechnungen mit NaN umgegangen werden soll,
ansonsten vorher eben mit Delphi-Referenz durchsuchenIsNan prüfen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Null als Property

  Alt 8. Apr 2021, 23:17
Das Feature Nullables in Delphi sollte mehr umfassen, als das was oben skizziert und auch in unzähligen Bibliotheken seit vielen Jahren vorhanden ist.
Nämlich das, was man nicht mit so nem Record abbilden kann: operator hoisting (also ich kann die Operatoren darauf anwenden, die ich auch auf den typen in T anwenden kann), nullable propagation (ggf auch sowas wie den "Elvis" Operator aus C#).
Besser, sie nehmen sich dafür Zeit, wo sie ja so "viele" Compiler-Entwickler haben, gell?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.166 Beiträge
 
Delphi 12 Athens
 
#5

AW: Null als Property

  Alt 9. Apr 2021, 13:47
Ich bin kein Compiler-Ingenieur, aber kämen wir der Sache denn nicht schon etwas näher
wenn ein paar mehr Operatoren möglich wären ?
Wie z.B. die ?? ??= Operatoren in C# ?
https://docs.microsoft.com/en-us/dot...scing-operator

Das sollte doch prinzipiell keine allzugroßen Probleme beim Delphi-Compiler erzeugen, oder etwa doch ?
Vielleicht denke ich da aber zu einfach
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Null als Property

  Alt 9. Apr 2021, 14:24
So lange es nicht mit der aktuellen Syntax kollidiert, wäre es "eigentlich" kein Probleme weitere Operatoren zu implementieren.
Und sowas wie ?? , ?= oder ~= (RegEx) hätte in Pascal keine Probleme, da die aktelle Syntax sowas nicht zulässt und somit niemand sowas hat, was dann mit der neuen Syntax kollidieren täte.

Bei Variant könnte z.B. == passen, um nicht nur den Inhalt, sondern auch den Typ zu vergleichen. (OK, = und == in Delphi, im Vergleich zu gewissen C-Sprachen, wäre vielleicht bissl ungünstig, für Leute die in mehreren Sprachen unterwegs sind)

Doppeloperatoren wären auch mal nett,
wie z.B. A not and B oder A not or B , wobei man hier auch einfach NAND und NOR einführen könnte,
aber vor allem ein A not in B hab ich schon soooo oft vermisst. (statt not (A in B) )
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Apr 2021 um 14:30 Uhr)
  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 07:38 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