Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie kann ich einen Floattypen definieren (TTyp = 0..360) (https://www.delphipraxis.net/39312-wie-kann-ich-einen-floattypen-definieren-ttyp-%3D-0-360-a.html)

SirThornberry 31. Jan 2005 20:48


Wie kann ich einen Floattypen definieren (TTyp = 0..360)
 
Wie kann ich einen neuen Floattypen definieren?

bei ganzzahligen Typen kann ich mit
Delphi-Quellcode:
type
  TWinkel = 0..360;
eine Typ definieren der Werte von 0 bis 360 haben darf. Allerdings sind dann nur ganzzahlige Werte erlaubt.

Ich möchte allerdings das Werte von 0 bis 360 erlaubt sind welche auch nachkommastellen haben dürfen. Also zum Beispiel 22.5

hab bisher folgendes versucht
Delphi-Quellcode:
type
  TWinkel = 0,0..360,0;
und
Delphi-Quellcode:
type
  TWinkel = 0.0..360.0;
Bei beiden Varianten meckert allerdings der compiler weil der "." bzw. das "," an den stellen unerwartet ist (also syntaktich nicht hingehört)

ibp 31. Jan 2005 20:58

Re: Wie kann ich einen Floattypen definieren (TTyp = 0..360)
 
also der type der form
Delphi-Quellcode:
TWinkel = 0,0..360,0;
würde ja bedeuten der compiler müsste eine bereichsprüfung mit unendlich vielen zahlen durchgehen! schon zwischen 0 und 0.1 gibt es unendlich viele zahlen! :shock:

hab aber leider keine idee was man sonst machen könnte!

[edit] ist schon spät und montag![/edit]

rantanplan99 31. Jan 2005 21:22

Re: Wie kann ich einen Floattypen definieren (TTyp = 0..360)
 
Zitat:

Zitat von ibp
schon zwischen 0 und 0.1 gibt es unendlich viele zahlen! :shock:

Naja, es gibt nur endliche viele Zahlen da wir hier ja nicht im reellen Raum sind, sondern im Raum der maschinendarstellbaren Zahlen (glaub nach der IEEE 754 Norm), und davon gibt es nunmal nur endlich viele, wenn auch verdammt viel endlich viele. :warn:

Du könntest das von 0..36000 gehen lassen, und deine Werte dann entsprechend mit 100 multiplizieren, bzw. dividieren. ist aber wohl auch nicht so schön die Lösung.

Robert_G 31. Jan 2005 23:19

Re: Wie kann ich einen Floattypen definieren (TTyp = 0..360)
 
Was spricht gegen Properties?
Delphi-Quellcode:
private fSomeFloat :float;
public property SomeFloat read fSomeFloat write setSomeFloat;
...

procedure TSomeType.setSomeFloat(const aValue: float);
begin
  if (aValue < 0) or (aValue > 360) then
    raise EOutOfBoundsException('miep');
  fSomeFloat := aValue;
end;
Wenn dir das zu doof ist, schnappe dir FreePascal. Das kann IMHO Operatorüberladung. Damit könntest du "direkt" mit den Instanzen der Klassse rechnen. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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 by Thomas Breitkreuz