Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Aufzählungstyp mit Gleitkommazahlen (https://www.delphipraxis.net/171883-aufzaehlungstyp-mit-gleitkommazahlen.html)

Mojito 30. Nov 2012 12:25

Aufzählungstyp mit Gleitkommazahlen
 
Hallo liebe Delphi Freunde,

ich möchte einen Aufzählungstyp erstellen, der Gleitkommazahlen wie 2.1, 2.9,10.2 etc. enthält. Wenn ich dies mache erhalte ich jedoch eine Fehlermeldung, da nur Ganzzahlen erlaubt sind:

type
Delphi-Quellcode:
TZalen=(1.0,2.0,3.0);
E2029 Bezeichner erwartet, aber Real-Konstante gefunden

bzw wenn ich die Zahlen in Anführungszeichen ('3.2') setze,

"E2029 Bezeichner erwartet, aber String-Konstante gefunden "

Habt ihr eine Lösung, wie man dieses Problem umgehen könnte?

Vielen Dank für eure Hilfe

Medium 30. Nov 2012 12:29

AW: Aufzählungstyp mit Gleitkommazahlen
 
Als einziges was den Aufzählungstypen beibehalten würde, fiele mir ein Vielfache der WErte zu benutzen - quasi wie einen Festkommawert, und dann bei Benutzung entsprechend zu dividieren. Man kann das zwar mittels Funktionen und Drumherum einigermaßen nett machen, aber "schön" ist das dennoch nicht. Wenn du von dem Enum nachher keine Sets brauchst, würde ich fast auf die guten alten Konstanten zurückgreifen.

Bernhard Geyer 30. Nov 2012 12:32

AW: Aufzählungstyp mit Gleitkommazahlen
 
[OT]Mit Java wäre das keine Problem ....[/OT]

Bei enums können nur Ganzzahlwerte verwendet werden.

Was willst du eigentlich damit erreichen?

Mojito 30. Nov 2012 12:33

AW: Aufzählungstyp mit Gleitkommazahlen
 
Hallo Medium,

ja das würde wahrscheinlich gehen. Bei 30-40 Gleitkommawerten, würde das jedoch sehr viel und unübersichtlich werden.

p80286 30. Nov 2012 12:42

AW: Aufzählungstyp mit Gleitkommazahlen
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1193697)
[OT]Mit Java wäre das keine Problem ....[/OT]

Soweit ich weiß, sitzt da eine Kaffebohne und mach aus der reals Konstanten, die bei Bedarf rückübersetzt werden.

Zitat:

Zitat von Bernhard Geyer (Beitrag 1193697)
Was willst du eigentlich damit erreichen?

:thumb:

eine andere Möglichkeit wäre:
Delphi-Quellcode:
mytype=(zweiknull,dreiknull,vierk30,_5k79)
daß müßte bei Bedarf natürlich wieder übersetzt werden.

Gruß
K-H

Zitat:

ja das würde wahrscheinlich gehen. Bei 30-40 Gleitkommawerten, würde das jedoch sehr viel und unübersichtlich werden.
Jo und Du bist auf dem besten Weg Dich zu wundern warum 2.300 nicht gleich 2.30 ist??

In den letzten Wochen gab es doch (gefühlt) haufenweise Threads dazu.

uligerhardt 30. Nov 2012 12:44

AW: Aufzählungstyp mit Gleitkommazahlen
 
Ich würde einen "normalen" Enum-Typen und ein konstantes Array draus machen:
Delphi-Quellcode:
type
  TStufe = (stWenig, stMittel, stBoah);
const
  cZahlen: array[TStufe] of Double = (1.0, 2.0, 3.0);
Das kann man dann so benutzen:
Delphi-Quellcode:
procedure VerarbeiteStufe(AStufe: TStufe);
begin
  ShowMessage(FloatToStr(cZahlen[AStufe]));
end;

Jonas Shinaniganz 30. Nov 2012 12:45

AW: Aufzählungstyp mit Gleitkommazahlen
 
Du könntest du inetwa beschreiben was du dann im weiteren Verlauf damit vorhast?

Vielleicht kommst du mit einem Array viel schneller zum Ziel,

Grüße

Mojito 30. Nov 2012 13:03

AW: Aufzählungstyp mit Gleitkommazahlen
 
Der Aufzählungstyp ist Teil eines Records, der für einen Array genutzt wird. So ungefähr sieht oder soll es aussehen.

Delphi-Quellcode:
type
TZeit=(1.0,2.1.,5.0,12.3);
TPNummer=integer;
....

TPersonal = record
Arbeitszeit: Zeit;
Mitarbeiter: integer;
...

TPKarte = array[1..100] of TPersonal;

var
Personal:TPKarte;

Medium 30. Nov 2012 13:25

AW: Aufzählungstyp mit Gleitkommazahlen
 
Warum dafür eine Aufzählung? :gruebel: Einfach als Float oder dar TDateTime (TTime) in den Record und fertig.

p80286 30. Nov 2012 15:35

AW: Aufzählungstyp mit Gleitkommazahlen
 
Ich nehme an, daß die Arbeitszeit in 5minutenschritten , oder so ähnlich, erfaßt wird, darum die Aufzählung.
Da müßte dann eine spezielle Art der Rundung eingebaut werden.


Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 Uhr.
Seite 1 von 2  1 2      

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