![]() |
ist es möglich schon bei Typdeclaration Werte zuzuweisen ?
ist es möglich schon bei Typdeclaration Werte zuzuweisen ?
so dass alle Variablen davon mit dem selben Startwert belegt sind ?
Delphi-Quellcode:
so gehts nicht, aber könnte es gehen ? mir ist nämlich leider nichts bekannt.
type
TMyRecord = record i : Integer = 5; end; (Sollte mit Records funktionieren) hmm |
Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen
Also in Win32 NEIN.
Im .Net gibt's da etwas vergleichbares. (glaub mal sowas gesehn zu haben ... kannst ja mal suchen, ich hatte das vor ewigen Zeiten auch mal hier irgendwo gefragt)
Delphi-Quellcode:
oder so ähnlich, für records fällt's mir gerade nicht so richtig ein.
Const TMyRecord = record
i : Integer; end = (i: 5); eventuell hilft da die OH auch noch etwas - schau mal nach CONST, oder Konstanten, oder so :zwinker: Bei Variablen (also mit Var), geht es nur für die Globalen. |
Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen
nein, das ist nicht möglich. Es ist eben eine Typdeclaration und da wird nur angegeben wie der speicher aufgeteilt ist. Wenn du Werte vor belegen willst nutze am besten klassen.
|
Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen
Zitat:
Hallo Himitsu, also das funktioniert auch unter Win32, leider ist es doch nicht ganz das, was ich wollte. deswegen habe ich das mit den Konstanten rausgelöscht aus meinem Betrag ( aber trotzdem gut zu wissen) Ich bin nämlich gerade dabei die neuen tollen Records von D2006 zu entdecken. Für einfache Aufgaben sind die nämlich super zu verwenden ! in meinem Beispiel soll FMindestanzahl mit dem wert 2 belegt werden, auch wenn der Programmierer vergessen hat die property MindestAnzahl festzulegen .. Gibts denn da gar keine Möglichkeit auch nicht unter D2006 ? hmmm
Delphi-Quellcode:
type
TRauschfilter = record strict private Anzahl : Integer; FMindestAnzahl : Integer; PrevTick : TTick; procedure SetMindestanzahl(const Value: Integer); public function confirm(const Tick : TTick) : boolean; property MindestAnzahl : Integer read FMindestAnzahl write SetMindestAnzahl; end; Zitat:
|
Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen
Falls es mal jemand sucht, so geht es (natürlich) :-)
Delphi-Quellcode:
TMyRecord = record
const i : Integer = 5; end; |
Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen
Moin Stoxx,
vielleicht hättest Du noch dazu schreiben sollen, dass es:
|
Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen
Zitat:
Denn dummerweise entspricht "i" einer (Klassen)-Variable ( von Records ). Der Record hat eine eigene Klassenvariable, die für alle Variablen dieses Types gelten. Wenn man den Wert "i" ändert, dann ändert man dummerweise jede Variable i von allen Variablen dieses Types TMyRecord. Witzige Geschichte. Zitat:
Alldieweil nur so Statische Variablen in Delphi mögich sind möglich sind. Eine procdure kann ihre eigene statische Variable haben. ( geht auch bei älteren Delphi versionen) Anwendungsfall: Generierung einer einmaligen ID.
Delphi-Quellcode:
sorry für die Falsch-Information, aber ich habs auch erst nach langer Fehlersuche gemerkt, dass const bei Records dann eine Klassenvariable darstellt.
function makeID : longint;
const prevID : longint = 0; // static variable var sec : longint; begin sec := trunc( (date - 38000) * 1000000 + (Time * 1000000) ); if sec <= prevID then sec := prevID + 1; prevID := sec; result:= sec; end; // function makeid |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 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