AGB  ·  Datenschutz  ·  Impressum  







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

Beschränkter Bereich für Variable

Ein Thema von nupset · begonnen am 27. Jan 2006 · letzter Beitrag vom 29. Jan 2006
Antwort Antwort
Seite 1 von 2  1 2      
nupset

Registriert seit: 23. Jan 2006
4 Beiträge
 
Delphi 7 Personal
 
#1

Beschränkter Bereich für Variable

  Alt 27. Jan 2006, 16:09
Hallo,
ich möchte gerne eine Variable haben, die nur die Werte von 1 bis 3 annehmen kann. Das ist wahrscheinlich gar nicht sonderlich schwierig, aber jetzt kommts
Sollte der Wert außerhalb des Bereiches liegen, dann soll er automatisch... bäh. Mir fehlen die Worte...
also
Delphi-Quellcode:
variable:=3;
variable:=variable+1;
// Soll jetzt nicht 4 sein, sondern bei eins neu anfangen
und genauso
Delphi-Quellcode:
variable:=1;
variable:=variable-1;
// Soll jetzt nicht 0 sein, sondern 3
Ich hoffe das war einigermaßen verständlich...
Gibts da was, wie man das realisieren kann oder muss man da mehr oder weniger viel Aufwand treiben? (Mit if-Anweisungen und so kann ich das sonst auch alleine... )
Warum scheint die Sonne eigentlich tagsüber?
Nachts wäre sie doch von viel größerem Nutzen...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Beschränkter Bereich für Variable

  Alt 27. Jan 2006, 16:11
Einfach einen neuen Typ definieren und diesen verwenden.
Delphi-Quellcode:
type
  TMyType = 1..3;
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Beschränkter Bereich für Variable

  Alt 27. Jan 2006, 17:29
Hi,

aus meiner Sicht durch ein Property relisierbar.

Delphi-Quellcode:
  privat
    FVariable: Integer;
    procedure SetVariable(const Value: Integer);
    { Private-Deklarationen }
  public
    property Variable: Integer read FVariable write SetVariable;
    { Public-Deklarationen }
  end;
  ...

implementation

procedure TForm1.SetVariable(const Value: Integer);
begin
  if FVariable <> Value then
  begin
    if Value in [1..3] then
      FVariable := Value
    else
      if Value > 3 then
        FVariable := 3
      else
        FVariable := 1;
  end;
end;
Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Beschränkter Bereich für Variable

  Alt 27. Jan 2006, 17:32
ich glaube es ist doch einfacher, speicherschonender und vor allem schneller mit einem Variablentypen:

Delphi-Quellcode:
procedure bla;
var
  i:1..3;
begin
  bla;
  bla;
end;
die Variable kann wie eine Integer, Int64 oder Byte -Variable verwendet werden.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
nupset

Registriert seit: 23. Jan 2006
4 Beiträge
 
Delphi 7 Personal
 
#5

Re: Beschränkter Bereich für Variable

  Alt 27. Jan 2006, 18:14
erstmal danke für die schnellen Reaktionen!!
Ich hätte vielleicht anmerken sollen, dass ich mich grad mal seit 2 Wochen mit Delphi beschäftige, demnach ist mir die Antwort von dataspider etwas zu hoch. sry.
Die beiden anderen Möglichkeiten hören sich ganz gut an, funzen aber irgendwie nicht. die Werte gehen ohne Rücksicht auf verluste über 3 hinaus. Oder mach ich da was falsch??
Delphi-Quellcode:
type TMyType = 1..3;
var test:TMyType;

begin
test:=1;
repeat
  showmessage(IntToStr(test));
  test:=test+1;
until false;
end;
und das andere
Delphi-Quellcode:
var test:1..3;

begin
test:=1;
repeat
  showmessage(IntToStr(test));
  test:=test+1;
until false;
end;
Oder bin ich einfach nur zu blöd?? (Antwort 'Ja' wird nicht akzeptiert )
Warum scheint die Sonne eigentlich tagsüber?
Nachts wäre sie doch von viel größerem Nutzen...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Beschränkter Bereich für Variable

  Alt 27. Jan 2006, 18:58
Herzlich Willkommen in der Delphi-PRAXiS.

Kommst du damit zurecht?

Delphi-Quellcode:
function Successor(const n, min, max: Integer): Integer;
begin
  if Succ(n) > max
    then Result := min
    else Result := Succ(n);
end;

function Predecessor(const n, min, max: Integer): Integer;
begin
  if Pred(n) < min
    then Result := max
    else Result := Pred(n);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
nupset

Registriert seit: 23. Jan 2006
4 Beiträge
 
Delphi 7 Personal
 
#7

Re: Beschränkter Bereich für Variable

  Alt 27. Jan 2006, 19:13
Warum einfach, wenns auch kompliziert geht..?
Dann deklarier ich ma lieber ne normale int-variable und mach das mit if-Anweisung. Ich brauch das nur einmal in meinem Programm. Also
Delphi-Quellcode:
test:=test+1;
if test=4 then test:=1;
if test=0 then test:=0;
hatte bloß gedacht, dass es vlt eine schnellere Methode gibt, da das in ner OnTimer-Prozedur ist und schnell von statten gehn muss...

Trotzdem danke allerseits!
Warum scheint die Sonne eigentlich tagsüber?
Nachts wäre sie doch von viel größerem Nutzen...
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#8

Re: Beschränkter Bereich für Variable

  Alt 27. Jan 2006, 22:11
Zitat von nupset:
Warum einfach, wenns auch kompliziert geht..?
Delphi-Quellcode:
test:=test+1;
if test=4 then test:=1;
if test=0 then test:=0;

Ich dachte Deine Variable sollte nur Werte innerhalb 1..3 annehmen?

Mein Vorschlag aus dem Kopf und ungetestet:
Delphi-Quellcode:
var i: Cardinal;
begin
  if i in [1..3] then
    // Dein Code wenn i < 4
   else
    i:= Low(i); // oder i:= 1
end;
sonst:
Delphi-Quellcode:
var i: Cardinal
begin
  if i > 3 then
    i:= 0;
end;
Musst Dich nur entscheiden welche untere Grenze gilt und die Beispiele entsprechend anpassen!!
Gruss Mario
Mario
  Mit Zitat antworten Zitat
Hobby-Programmierer

Registriert seit: 19. Jan 2006
Ort: München
392 Beiträge
 
Delphi XE Starter
 
#9

Re: Beschränkter Bereich für Variable

  Alt 27. Jan 2006, 22:29
Upss
Hab zu spät gelesen das 0 = 3 ergeben soll, Sorry
Ungetestet und sicher noch verbesserungswürdig
Delphi-Quellcode:
var i: Integer;
begin
  Case i of
    0 : i:= 3;
    1..2: Inc(i);
    3 : i:= 1;
  end;
end;
Das Hochzählen von I erfolgt nur wenn I > 0 und I < 3, weils sonst Quatsch währe
Gruss Mario
Mario
  Mit Zitat antworten Zitat
nupset

Registriert seit: 23. Jan 2006
4 Beiträge
 
Delphi 7 Personal
 
#10

Re: Beschränkter Bereich für Variable

  Alt 28. Jan 2006, 11:30
Ok, tut mir light. da hab ich mich wohl etwas falsch ausgedrückt. Die Variable soll nur Werte zwischen 1 und 3 annehmen, aber die einzige Operation dafür ist eben +1 und -1 also nimmt die Variable mit meiner lösung nur Werte von 1-3 an. ich dachte bloß, dass es vielleicht irgendeine Möglichkeit gibt, so eine Art 'kreisförmige' variable zu erstellen.
Delphi-Quellcode:
{
  2
/  \
1 -  3
}
(Musste das mal in Code-Tags packen, weil der sonst die Leerzeichen frisst und die schööööne 'Zeichnung' dadurch killt.. )
und dann quasi +1 -> im Uhreigersinn einen Wert weiter und
-1 -> entsprechend gegen den Uhrzeigersinn

Aber mit meiner lösung funzt das nu auch bei nem Timer Intervall von 1ms.
Warum scheint die Sonne eigentlich tagsüber?
Nachts wäre sie doch von viel größerem Nutzen...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:11 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