AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi ist es möglich schon bei Typdeclaration Werte zuzuweisen ?
Thema durchsuchen
Ansicht
Themen-Optionen

ist es möglich schon bei Typdeclaration Werte zuzuweisen ?

Ein Thema von stoxx · begonnen am 21. Feb 2006 · letzter Beitrag vom 28. Jun 2006
Antwort Antwort
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

ist es möglich schon bei Typdeclaration Werte zuzuweisen ?

  Alt 21. Feb 2006, 16:21
ist es möglich schon bei Typdeclaration Werte zuzuweisen ?
so dass alle Variablen davon mit dem selben Startwert belegt sind ?

Delphi-Quellcode:
type

TMyRecord = record
 i : Integer = 5;
end;
so gehts nicht, aber könnte es gehen ? mir ist nämlich leider nichts bekannt.
(Sollte mit Records funktionieren)

hmm
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen

  Alt 21. Feb 2006, 16:31
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:
Const TMyRecord = record
    i : Integer;
  end = (i: 5);
oder so ähnlich, für records fällt's mir gerade nicht so richtig ein.
eventuell hilft da die OH auch noch etwas - schau mal nach CONST, oder Konstanten, oder so

Bei Variablen (also mit Var), geht es nur für die Globalen.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen

  Alt 21. Feb 2006, 16:31
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#4

Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen

  Alt 21. Feb 2006, 16:41
Zitat von himitsu:
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:
Const TMyRecord = record
    i : Integer;
  end = (i: 5);

Bei Variablen (also mit Var), geht es nur für die Globalen.

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:
Wenn du Werte vor belegen willst nutze am besten klassen.
das wollte ich ja nun gerade vermeiden
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen

  Alt 28. Jun 2006, 15:53
Falls es mal jemand sucht, so geht es (natürlich)


Delphi-Quellcode:
TMyRecord = record

  const
     i : Integer = 5;
end;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen

  Alt 28. Jun 2006, 18:33
Moin Stoxx,

vielleicht hättest Du noch dazu schreiben sollen, dass es:
  • nicht mit jeder Delphi Version funktioniert (D2006 geht, D7 geht nicht)
  • die Option "zuweisbare typisierte Konstanten" aktiviert sein muss, damit man dann auch etwas zuweisen kann (aber wer aktiviert das )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#7

Re: ist es möglich schon bei Typdeclaration Werte zuzuweisen

  Alt 28. Jun 2006, 18:42
Zitat von Christian Seehase:
Moin Stoxx,

vielleicht hättest Du noch dazu schreiben sollen, dass es:
  • nicht mit jeder Delphi Version funktioniert (D2006 geht, D7 geht nicht)
  • die Option "zuweisbare typisierte Konstanten" aktiviert sein muss, damit man dann auch etwas zuweisen kann (aber wer aktiviert das )
ich sollte mich berichtigen, das ist nicht das was ich suchte.
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:
(aber wer aktiviert das )
ich aktiviere das !
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:
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
sorry für die Falsch-Information, aber ich habs auch erst nach langer Fehlersuche gemerkt, dass const bei Records dann eine Klassenvariable darstellt.
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  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 17:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz