AGB  ·  Datenschutz  ·  Impressum  







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

Aufzählung- und Mengentype

Ein Thema von Bomberbb · begonnen am 8. Mai 2009 · letzter Beitrag vom 8. Mai 2009
Antwort Antwort
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#1

Aufzählung- und Mengentype

  Alt 8. Mai 2009, 11:31
Ich melde mich mal wieder mit einem Problem:

Ich möchte eine Änderung in einem bestehendem Programm machen, wo es folgende Definitionen gibt:
Delphi-Quellcode:
  teinszwei=(eins,zwei);
  tdreivier=(drei,vier);
nun möchte ich das ganze zuweisungskompatibel gestalten und hab mir gedacht, ich löse das so:
Delphi-Quellcode:
  teinsvier=(eins,zwei,drei,vier);
  
  teinszwei=eins..zwei;
  tdreivier=drei..vier;
Nun kommt mein Problem: Die Zuweisungskompatibilität ist zwar gegeben, aber dafür gibt es ein anderes Problem:

tdreivier(0) ist eins; und da standardmäßig mit 0 initialisiert wird, werden alle variablen vom typ tdreivier mit eins initialisiert. Da das ganze Programm riesig ist und mit Sicherheit nicht alle Variablen manuell initialisiert werden...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Aufzählung- und Mengentype

  Alt 8. Mai 2009, 11:42
Zitat:
tdreivier(0) ist eins;

tdreivier müßte mit (2) initialisiert werden,
oder besser noch mit mit Low(tdreivier) ... falls du mal wieder was änderst


Ja und wo ist nun eigentlich genau das Problem?
Derartige Typen müssen doch so oder so schon immer initialisert werden, da dieses nicht automatisch von Delphi gemacht wird.
(es sei den die Variable ist in einem Objekt definiert, welches standardmäßig mit Nullen initialisiert wird)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#3

Re: Aufzählung- und Mengentype

  Alt 8. Mai 2009, 12:06
ja bei so wie es jetzt war wurde tdreivier automatisch mit drei initialisiert, jetzt mit eins. Leider kann ich nicht davon ausgehen, dass alle variablen von tdreivier explizit initialisiert wurden und ca. 1000 Vorkommen dieser Variablen im Quelltext zu inititalisieren ist doch sehr aufwendig...
Ich dachte, es gäbe eine andere Möglichkeit so etwas zu definieren...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Aufzählung- und Mengentype

  Alt 8. Mai 2009, 12:17
Neeee, eine andere Möglichkeit gibt es nicht,

denn wenn es bisher "automatisch" Initialisiert wurde, dann wurde nicht Variable explizit initialisiert, sondern sie war rein zufällig an einer Stelle definiert, welche (wie z.B. der Variablenspeicher bei Objekten) global initialisert wurden
und da wird meißt nur alles mit 0 gefüllt.

Dir bleibt also keine andere Möglichkeit als dieses überall per Hand zu initialisieren.


Der einzige alternative Ausweg wäre
teinsvier = (undefiniert, eins, zwei, drei, vier); aber da müßtest du dann eventuell an anderen Stellen wiederum prüfen, ob der Wert definiert bzw. richtig initialisiert wurde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#5

Re: Aufzählung- und Mengentype

  Alt 8. Mai 2009, 12:39
Ich glaube, dann werde ich die 'undefiniert'-Lösung nehmen.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

Re: Aufzählung- und Mengentype

  Alt 8. Mai 2009, 12:46
Die Frage, die sich mir stellt, ist, warum du TEinsZwei und TDreiVier zuweisungskompatibel machen möchtest, wenn die Wertebereiche dieser beiden Typen sowieso unterscheiden. Du wirst den Wert aus einer Variablen des einen Typen niemals in eine Variable des anderen Typen schreiben können ohne die Wertebereiche zu verletzen.
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
43.139 Beiträge
 
Delphi 12 Athens
 
#7

Re: Aufzählung- und Mengentype

  Alt 8. Mai 2009, 12:50
so könnte man z.B. Werte für Beides in nur einem Parameter übergeben?
z.B. wie bei dwFlagsAndAttributes in MSDN-Library durchsuchenCreateFile ... da gibt's Attribute, Flags und SecurityFlags
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

Re: Aufzählung- und Mengentype

  Alt 8. Mai 2009, 15:12
Darauf zu vertrauen, dass die Werte die in nicht (bzw "automatisch") initialisierten Variablen stehen korrekt sind, halte ich persönlich für sehr gefährlich.
Deshalb würde ich die Finger davon lassen, diese Typen zu ändern und eher Funktionen für die Stellen schreiben, wo man eine Kompatibilität dieser Typen haben möchte.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  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 23:08 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