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
Antwort Antwort
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
339 Beiträge
 
Delphi 11 Alexandria
 
#1

Default-Wert für Record in Methode

  Alt 17. Feb 2020, 12:02
Hallo,

ist es nicht möglich einen Record vorinitialisiert in eine Methode zu übergeben?

Code:
type
  TMyRecord = record
    MyVar: string;
  end;

const
  cMyRecord : TMyRecord = (MyVar: 'Hello world');

type
  TMyClass = class
  public
    procedure HelloWorld(const aMyVar: TMyRecord = cMyRecord);
  end;
Meldet in der "procedure" Zeile:
[dcc32 Fehler] Unit1.pas(21): E2268 Parameter dieses Typs dürfen keine Standardwerte haben
[dcc32 Fehler] Unit1.pas(21): E2026 Konstantenausdruck erwartet

Ist meine Syntax falsch?

Danke
Oliver
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Default-Wert für Record in Methode

  Alt 17. Feb 2020, 12:09
cMyConst ist eine typisierte Konstante und nicht benutzbar für default parameter Werte.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Default-Wert für Record in Methode

  Alt 17. Feb 2020, 12:11
cMyConst ist eine typisierte Konstante und nicht benutzbar für default parameter Werte.
Leider, obwohl es ja eigentlich keinen Grund gibt, warum das nicht gehen sollte.


Es ginge hier nur der Parameter als Pointer und dann innen ein if not Assigned(aMyVar) then aMyVar := cMyRecord; oder das beliebte
Delphi-Quellcode:
procedure HelloWorld(const aMyVar: TMyRecord); overload;
procedure HelloWorld(); overload;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Feb 2020 um 12:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.413 Beiträge
 
Delphi 12 Athens
 
#4

AW: Default-Wert für Record in Methode

  Alt 17. Feb 2020, 12:14
Als Alternative eine Methode ohne den Record-Parameter definieren, mit overload markieren und darin den Record initialisieren und die eigentliche Methode aufrufen.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
339 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Default-Wert für Record in Methode

  Alt 17. Feb 2020, 14:59
Beide Ideen hatte ich auch, mit dem Pointer und dem overload.
Aber ich dachte einfach, ich bin zu doof, weil ein Record doch zu Pascal gehört, seitdem es existiert.
Ich werde es dann per overload machen.
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Default-Wert für Record in Methode

  Alt 17. Feb 2020, 15:51
Nee, geht leider nicht ... k.A. warum.

Delphi fügte ja auch nur die Werte direkt dort in den Aufrufen ein, wo die Parameter fehlen, drum wäre es nicht schwer sich die Referenz auf diese Konstante zu merken und sie an den Stellen zu verwenden.


Tipp: Für Property wurde das Default erweitert, denn "eigentlich" kann man nur ordinale Werte bis 32 Bit dort verwenden (Integer),
aber da gibt es nun was von Ratio.. mit Parametern.
Delphi-Quellcode:
property i: Integer read ... write ... default 123;

[Default('abc')]
property S: string read ... write ...;
http://docwiki.embarcadero.com/Libra...faultAttribute
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:37 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