AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Default-Wert für Record in Methode
Thema durchsuchen
Ansicht
Themen-Optionen

Default-Wert für Record in Methode

Ein Thema von backdraft · begonnen am 17. Feb 2020 · letzter Beitrag vom 18. Feb 2020
 
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
496 Beiträge
 
Delphi 12 Athens
 
#9

AW: Default-Wert für Record in Methode

  Alt 18. Feb 2020, 11:27
Naja, logisch betrachtet magst du ja Recht haben, aber ein Record, wenngleich er auch nur einen einzigen Wert beinhaltet, wird vom Compiler nunmal als Record betrachtet und unterliegt somit den Typenbeschränkungen eines solchen.
Ein Record, der nur einen String beinhaltet, ist immer noch ein Record und kein String. Das macht aber auch irgendwie Sinn, denn es ist somit in jedem Fall zu 100% klar, wie sich dieser verhält. Stell dir mal vor, du hast folgenden Record:

Delphi-Quellcode:
TMyRec = record
  Value: String;
  class operator Implicit(AValue: String): TMyRec;
end;
Und jetzt weißt du diesem Record einen String-Wert zu. Was soll denn jetzt passieren? Soll er den Operator, oder den impliziten Zuweisungsbefehl verwenden? Aber okay, sagen wir jetzt mal, dass es eindeutig sei und er sich für eins von beiden entscheiden würde. Dann fällt uns ein, dass wir am Record noch einen Zweiten Wert benötigen, und ändern diesen entsprechend ab. Und jetzt kompiliert das gesamte Programm plötzlich nicht mehr, bzw. es macht Blödsinn (je nach dem, was vorher passiert ist)? Ich denke nicht, dass das eine sehr sinnvolle Spracherweiterung wäre. Die extrem wenigen Fälle, wo das wirklich sinnvoll wäre, müssten dann mit enormem Programmieraufwand bei allen anderen eingebüßt werden.
Noch nicht einmal fände ich es Sinnvoll, wenn Arrays der Länge 1 mit entsprechenden Variablen kompatibel wären, und das käme sicher noch mit weniger Problem einher.

Pssst: Record ... kein Array (ja, ich weiß dass für Delphi Records auch nur Arrays mit nur einer Ebene sind, zumindestens bei den Funktionen zur Initialisierung des Speichers)
Najaaaaa, wenn du von statischen Arrays redest, dann vielleicht. Nur können ja statische Arrays aus genau dem selben Grund keine Standardwerte haben. Und dynamische Arrays bekommen nur ein offenes Array als Standardwert, das am Anfang der Methode zu einem dynamischen Array konvertiert wird.
Dennis

Geändert von Dennis07 (18. Feb 2020 um 11:36 Uhr)
  Mit Zitat antworten Zitat
 


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 10:29 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