AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi inc bei ordinären Typen(kein Ende in sicht)
Thema durchsuchen
Ansicht
Themen-Optionen

inc bei ordinären Typen(kein Ende in sicht)

Ein Thema von snow · begonnen am 3. Jan 2008 · letzter Beitrag vom 4. Jan 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

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

Re: inc bei ordinären Typen(kein Ende in sicht)

  Alt 3. Jan 2008, 02:41
Nja, erstmal, was hindert dich daran selber für die gewünschte Reinfolge zu sorgen?
Delphi-Quellcode:
If test > High(Tmy123) Then test := Low(Tmy123)
Else Inc(test);
Das Ganze liese sich dann notfalls auch noch schön in eine neue Inc-Prozedur verpacken.

Außerdem, weißt du wie aufwenig der Code ('s kompilierte ASM-Ergebnis) würde, wenn die "Designer der Sprache" auf jeden Wertesprung eingehen würden?

... abgesehn davon, daß Erstens die Codeausführung schonmal schön langsam werden könnte (durch unmassen Abfragen wann wie weitergesprungen werden sollte)

und Zweitens, was wäre mit den Programmieren, welche soein Verhalten nicht wöllten?
(wer sagt denn, daß die "undefinierten" Werte nicht doch verwendet werden?)


PS: Schlimmer wird es, wenn man da mal selber die Werte festlegt , da kommt noch weniger das raus, was du willst.
Delphi-Quellcode:
type Tmy123 = (eins=1,zwei=4,drei=9,vier=100);

var test : Tmy123;

begin
  test := eins; // für Alle die es initialisiert haben wollen (=1)
  inc(test); // =2 und nicht 4(zwei)
  inc(test); // =3 und nicht 9(drei)
  inc(test); // =4 und nicht 100(vier)
  inc(test); // =5 und nicht 1(eins)
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: inc bei ordinären Typen(kein Ende in sicht)

  Alt 3. Jan 2008, 11:18
Bei aktivierten RangeChecks gibt sowas glaube ich sogar eine Exception, oder? Aber RangeChecks sind ja, aus dem oben erwähnten Grund, nur zum Debuggen gedacht: Sie sind furchtbar langsam.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: inc bei ordinären Typen(kein Ende in sicht)

  Alt 3. Jan 2008, 12:08
Zitat von himitsu:
Außerdem, weißt du wie aufwenig der Code ('s kompilierte ASM-Ergebnis) würde, wenn die "Designer der Sprache" auf jeden Wertesprung eingehen würden?

... abgesehn davon, daß Erstens die Codeausführung schonmal schön langsam werden könnte (durch unmassen Abfragen wann wie weitergesprungen werden sollte)

und Zweitens, was wäre mit den Programmieren, welche soein Verhalten nicht wöllten?
(wer sagt denn, daß die "undefinierten" Werte nicht doch verwendet werden?)

Zu ersterem: Das von 1 unterschiedliche Inkrement wäre kein Problem - ob ein INC var oder ein ADD var, offset erzeugt wird, macht den Bock nicht fett. Lediglich die Sprünge, die beim Umbrechen entstehen, könnten Probleme bereiten. Eventuell würden hier aber Sprungtabellen Abhilfe schaffen.

Edit: Moment... es geht doch nicht so einfach, der Offset ist ja variabel Aber andererseits könnte ich damit leben, dass Aufzählungstypen mit Lücken langsamer sind bei gewissen Operationen als andere.


Und zu zweiterem: Wie oben erwähnt könnte das mit Typecasts auf reguläre Ganzzahltypen funktionieren. Wenn du einen typisierten Zeiger auf einen 4-Byte-Integer hast und diesen mittels Inc erhöhst, so wird auch nicht um 1, sondern um 4 Byte inkrementiert. Wenn du untypisierte Inkrementierung willst, kannst du den Zeiger in einen untypisierten Zeiger casten.
Analog könnte das auch mit den Aufzählungstypen gemacht werden.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#14

Re: inc bei ordinären Typen(kein Ende in sicht)

  Alt 3. Jan 2008, 13:37
Irgendwie habe ich noch Succ() und Pred() im Hinterkopf... Verhalten die sich bei Enums ggf. anders? Ich kanns gerade nicht testen weil unterwegs
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: inc bei ordinären Typen(kein Ende in sicht)

  Alt 3. Jan 2008, 16:53
Die sollten sich eigentlich genauso wie inc() und dec() verhalten.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: inc bei ordinären Typen(kein Ende in sicht)

  Alt 3. Jan 2008, 17:04
Ich hab hier leider auch kein Delphi installiert, aber es wär doch mal interessant, das herauszufinden. Jemand interessiert?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#17

Re: inc bei ordinären Typen(kein Ende in sicht)

  Alt 4. Jan 2008, 09:16
grundsätzlich ist an dem verhalten nichts falsch, da die ordinalen intern als uinteger abgelegt werden.
allerdings wenn ihr die überlaufprüfungen an habt, sollte es nach dem letzten wert einen überlauf exception geben.
(also mit {$Q+} und {$R+} kompiliert)

ein umspringen auf den ersten wert, wie von euch erwartet, gibt es nicht.
das könnt ihr aber mit "mod" selbst erzeugen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 03:35 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