Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Max und Minimalwert einer Integervariable festlegen (https://www.delphipraxis.net/42142-max-und-minimalwert-einer-integervariable-festlegen.html)

exoduscrises 14. Mär 2005 14:40


Max und Minimalwert einer Integervariable festlegen
 
Hallo zusammen, habe in der Suche nichts brauchbares gefunden und wollte jetzt fragen ob man eventuell einen Maximal- und Minimalwert für eine Integervariable festlegen kann.

mfg ´Stefan

alcaeus 14. Mär 2005 14:41

Re: Max und Minimalwert einer Integervariable festlegen
 
Hallo,

ja, z.B. so:
Delphi-Quellcode:
type MyInt = 15..23;
Greetz
alcaeus

himitsu 14. Mär 2005 14:44

Re: Max und Minimalwert einer Integervariable festlegen
 
Delphi-Quellcode:
Type TMaxMinInteger = -5..123;

Var xyz: TMaxMinInteger;

xyz ist jetzt eine Variable, wo alle Werte von -5 bit 123 reinpassen.

bei über-/unterschreitung meckert standardmäßig der Compiler (es wird nicht compiliert), oder das Programm (Error)...


[add]
mir wurde zwar der neue Beitrag angekündigt, aber wurde unten nicht angezeigt?

IngoD7 14. Mär 2005 15:08

Re: Max und Minimalwert einer Integervariable festlegen
 
Zitat:

Zitat von himitsu
bei über-/unterschreitung meckert standardmäßig der Compiler (es wird nicht compiliert), oder das Programm (Error)...

Hmmm ... :gruebel:
Delphi-Quellcode:
Type TMaxMinInteger = -5..123;

Var xyz: TMaxMinInteger;
    abc: integer;

begin
  abc := 250;
  xyz := abc; // <-- Compiler meckert nicht, Programm meckert auch nicht
end;

ste_ett 14. Mär 2005 15:25

Re: Max und Minimalwert einer Integervariable festlegen
 
Lass dir mal xyz ausgeben. :)

inttostr(xyz)

Binärbaum 14. Mär 2005 15:26

Re: Max und Minimalwert einer Integervariable festlegen
 
Zitat:

Zitat von IngoD7
Zitat:

Zitat von himitsu
bei über-/unterschreitung meckert standardmäßig der Compiler (es wird nicht compiliert), oder das Programm (Error)...

Hmmm ... :gruebel:
Delphi-Quellcode:
Type TMaxMinInteger = -5..123;

Var xyz: TMaxMinInteger;
    abc: integer;

begin
  abc := 250;
  xyz := abc; // <-- Compiler meckert nicht, Programm meckert auch nicht
end;

Das liegt evtl. daran, dass in den Optionen die Bereichsprüfung abgeschaltet wurde.

MfG
Binärbaum

IngoD7 14. Mär 2005 16:20

Re: Max und Minimalwert einer Integervariable festlegen
 
Zitat:

Zitat von ste_ett
Lass dir mal xyz ausgeben. :)
inttostr(xyz)

Ergab bei mir fehlerfrei den String '250'.

Aber ...

Zitat:

Zitat von Binärbaum
Das liegt evtl. daran, dass in den Optionen die Bereichsprüfung abgeschaltet wurde.

Das war's. Wobei das Einschalten alleine nicht reicht, das hatte ich probiert. Das Projekt muss danach einmal erzeugt werden, damit der Progammlauf (gestartet aus der IDE) auch auf Fehler läuft.

Ist nicht das erste mal, dass ich darauf hereinfalle ... :freak:

exoduscrises 14. Mär 2005 21:15

Re: Max und Minimalwert einer Integervariable festlegen
 
Vielen Dank erstmal, funktioniert wunderbar bei mir wenn ich mir die variable nochmal in einer anderen ausgeben lasse, jetzt kann ich endlich keine Lautstärke 62763 mehr erreichen :) ...

mfg Stefan

Oxmyx 14. Mär 2005 22:00

Re: Max und Minimalwert einer Integervariable festlegen
 
Zitat:

Zitat von exoduscrises
Vielen Dank erstmal, funktioniert wunderbar bei mir wenn ich mir die variable nochmal in einer anderen ausgeben lasse, jetzt kann ich endlich keine Lautstärke 62763 mehr erreichen :) ...

mfg Stefan

Wenn der Benutzer die Lautstärke eingibt, dann würde ich eher eine Abfrage nehmen, ob die Zahl im erlaubten Bereich liegt.

exoduscrises 15. Mär 2005 13:05

Re: Max und Minimalwert einer Integervariable festlegen
 
der Benutzer drückt auf einen Button bei dem die Lautstärke um "-10" erhöht wird , also gibt sie ja nicht direkt ein.

himitsu 15. Mär 2005 15:50

Re: Max und Minimalwert einer Integervariable festlegen
 
Was ist denn an sowas so schwer?
(hättest, das mit den Buttons, auch gleich sagen können :zwinker: )

Delphi-Quellcode:
Var Lautstaerke: Integer; // oder sowas in der Art ...

Prozedure ButtonPlusZehn(Sender: TObject);
  Begin
    Inc(Lautstaerke, 10);
    If Lautstaerke > 150 Then Lautstaerke := 150;
  End;

Prozedure ButtonMinusZehn(Sender: TObject);
  Begin
    Dec(Lautstaerke, 10);
    If Lautstaerke < 0 Then Lautstaerke := 0;
  End;
oder

Delphi-Quellcode:
Var Lautstaerke: Byte; // wenn's halt keine negativ gibt

Prozedure ButtonPlusZehn(Sender: TObject);
  Begin
    If Lautstaerke + 10 < 150 Then Inc(Lautstaerke, 10)
    Else Lautstaerke := 150;
  End;

Prozedure ButtonMinusZehn(Sender: TObject);
  Begin
    If Lautstaerke - 10 > 0 Then Dec(Lautstaerke, 10)
    Else Lautstaerke := 0;
  End;

alcaeus 15. Mär 2005 15:54

Re: Max und Minimalwert einer Integervariable festlegen
 
Da halte ich dagegen:

Delphi-Quellcode:
Lautstaerke := Min(Lautstaerke-10, 0);
Lautstaerke := Max(Lautstaerke+10, 150);
Noch einfach gehts nicht ;)

Greetz
alcaeus

himitsu 15. Mär 2005 16:12

Re: Max und Minimalwert einer Integervariable festlegen
 
hmmm, warum verwende ich Min und Max nur nie ... ach ja, die sind mir zu einfach und außerdem ist mein Code schneller und kleiner und ... :tongue:

Und dann ist das doch ein Gutes Beispiel für Was will ich und wie setze ich meinen Willen in die Tat (den Code) um :roll:

[add]
Ach ja ...
Zitat:

Zitat von shmia
Min und Max sind bei dir vertauscht!

sowas passiert beim selbermachen auch nicht so schnell :angel:

shmia 15. Mär 2005 17:09

Re: Max und Minimalwert einer Integervariable festlegen
 
Zitat:

Zitat von alcaeus
Da halte ich dagegen:
Delphi-Quellcode:
Lautstaerke := Min(Lautstaerke-10, 0);
Lautstaerke := Max(Lautstaerke+10, 150);

Ha!!!
Min und Max sind bei dir vertauscht!

Das ist mir auch schon passiert:
Delphi-Quellcode:
   Copies := Max(StrToInt(Edtcopies.Text), 20);
Und schon rauschen immer 20 Kopien aus dem Drucker. :wall: :wall: :wall:


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