Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Variable soll nur bestimmte Werte annehmen dürfen - wie? (https://www.delphipraxis.net/49440-variable-soll-nur-bestimmte-werte-annehmen-duerfen-wie.html)

Totti 11. Jul 2005 14:38


Variable soll nur bestimmte Werte annehmen dürfen - wie?
 
Moin,
hab per Suche nichts gefunden, was evtl. auch an den falschen Suchbegriffen lag.

Also, ich hätte gerne eine Variable deklariert, die beispielsweise nur die Werte 'ha', 'hb und 'hc' annehmen darf.

Wie geht das? :)

Danke

Kompon Ente 11. Jul 2005 14:39

Wie wär's mit Array's? *g*

Khabarakh 11. Jul 2005 14:41

Re: Variable soll nur bestimmte Werte annehmen dürfen - wie?
 
Mach aus der Variablen eine Property und überprüfe den Wert im Setter.

Die erlaubten Werte könntest du in einer Array-Konstante zusammenfassen:

Delphi-Quellcode:
procedure TFoo.SetText(const AValue: string);
const
  Valid: Array[0..2] of string = ('ha', 'hb', 'hc');
var
  i: Integer;
  IsValid: Boolean;
begin
  IsValid := false;
  for i := Low(Valid) to High(Valid) do
    if AValue = Valid[i] then
    begin
      IsValid := true;
      Break;
    end;

  if IsValid then
    FText := AValue;
end;

Duke_2004 11. Jul 2005 14:42

Re: Variable soll nur bestimmte Werte annehmen dürfen - wie?
 
Ich hab das bei mir so gemacht...

type
TFormat = (Querformat, Hochformat);

..
var
Variable:TFormat;
begin
..


Somit kann "Variable" nur die angegebenen Werte annehmen...
Korrigiert mich bitte, falls ich mich irre... ;-)

Kompon Ente 11. Jul 2005 14:43

Geht das nicht auch mit Array's? o.O

Totti 11. Jul 2005 14:46

Re: Variable soll nur bestimmte Werte annehmen dürfen - wie?
 
Zitat:

Zitat von Duke_2004
Ich hab das bei mir so gemacht...

type
TFormat = (Querformat, Hochformat);

perfekt, klappt! Ich hatte esmit eckigen klammenr und ' ' versucht - nur wurd das nix :D


Aber wie meint ihr das mit arrays?


edit:
danke fürs edit - nu weiß ich, was ihr meintet mit arrays ;)

Jens Schumann 11. Jul 2005 14:48

Re: Variable soll nur bestimmte Werte annehmen dürfen - wie?
 
Zitat:

Zitat von Totti
Also, ich hätte gerne eine Variable deklariert, die beispielsweise nur die Werte 'ha', 'hb und 'hc' annehmen darf....

Wg der Ungenauigkeit der Frage kann ich keine Antwort geben.

Darf die Variable nur die Werte 'ha' und 'hb und 'hc' annehmen oder
darf die Variable nur die Werte 'ha' oder 'hb oder 'hc' annehmen ?

freak4fun 11. Jul 2005 14:55

Re: Variable soll nur bestimmte Werte annehmen dürfen - wie?
 
Zitat:

Zitat von Duke_2004
Ich hab das bei mir so gemacht...

type
TFormat = (Querformat, Hochformat);

..
var
Variable:TFormat;
begin
..

Dem schließe ich mich an. :)

Delphi-Quellcode:
type
  TFormat = (ha, hb, hc);

var
  MeineVariable: TFormat;
begin
  Meine Variable := ha;
  if MeineVariable = hb then
    MeineVariable := hc;
end;
Ein weiteres Stichwort lautet Typsicherheit. ;)

@Kompon Ente: Lass bitte deine unnötigen Kommentare sein. :angel2: Wenn du dir den Thread mal ganz durchliest, weißt du hoffentlich auch warum. :angel:

MfG
freak

xineohp 11. Jul 2005 14:58

Re: Variable soll nur bestimmte Werte annehmen dürfen - wie?
 
moin,

nochmal zum besseren Verständnis:

Die von Duke vorgeschlagene Methode basiert auf Mengen(-typen/-operationen) [siehe Delphi-Referenz durchsuchenStrukturierte Typen]
Delphi-Quellcode:
type
  tWerte = ( ha, hb, hc );
Wenn die Variable nur einen der Werte annehmen darf:
Delphi-Quellcode:
var
  X: tWerte;
Wenn die Variable mehrere Werte annehmen darf:
Delphi-Quellcode:
var
  X: set of tWerte;
Mit in kann man prüfen ob ein Wert im Set enthalten ist.

Kedariodakon 11. Jul 2005 14:58

Re: Variable soll nur bestimmte Werte annehmen dürfen - wie?
 
hier mal nen Beispiel mit nem String Array, falls es noch wer gebrauchen kann...

Delphi-Quellcode:
Procedure TMeinDef.SetValue( Const Value: String );
Var      i:         Integer;
Const Valids:   Array[ 0..2 ] Of String = ( 'ha', 'hb', 'hc' );
Begin
   For   i   := Low( Valids ) To   High( Valids ) Do Begin
      If SameText( Valids[ i ], Value )   Then Begin
         FValue   := Value;
         Exit;
      End;
   End;
   Raise Exception.Create( '"' + Value + '"is a wrong kind of Value' );
End;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 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