Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu Menge (https://www.delphipraxis.net/12257-frage-zu-menge.html)

Pseudemys Nelsoni 24. Nov 2003 00:12


Frage zu Menge
 
hoi

ich habe ein type in dem ich nachher alle tv sender haben möchte, ich möchte auch prüfen ob ein bestimmter sender in der menge enthalten ist.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Type TSndr = (vox, pro7, rtl2);
     AlleSndr = Set of TSndr;
var test: AlleSndr;
begin
  test := [vox..pro7];
  if (rtl2 in test) then
  ShowMessage('ja')
  else showmessage('nein');
end;

beim prüfen ob pro7 oder vox drinne ist wird "ja" ausgegeben, bei "rtl2" nein, wieso das?

himitsu 24. Nov 2003 00:49

Re: Frage zu Menge
 
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif.

Natürlich ist rtl2 nicht in Test enthalten.

Denn du füllst Test mit den Werten von vox bis pro7
Delphi-Quellcode:
test := [vox..pro7];
Und in diesem Bereich liegen ja nur vox und pro7, aber eben nicht rtl2.


Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
  Type TSndr = (ard, zdf, vox, pro7, rtl2);
    AlleSndr = Set of TSndr;

  Var Test: AlleSndr;

  Begin
    Test := [zdf..pro7];
    If (rtl2 in Test) Then ShowMessage('ja')
    Else ShowMessage('nein');
  End;
zdf, vox & pro7 sind in Test enthalten / ard & rtl2 ist nicht in Test enthalten.

http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

Pseudemys Nelsoni 24. Nov 2003 00:52

Re: Frage zu Menge
 
ah, danke :D

noch eine frage, was ist der unterschied bei:

Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
  Type TSndr = (ard, zdf, vox, pro7, rtl2);
    AlleSndr = Set of TSndr;

  Var Test: AlleSndr;

  Begin
    Test := [zdf..pro7];
    If (rtl2 in Test) Then ShowMessage('ja')
    Else ShowMessage('nein');
  End;
und:


Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
  Type TSndr = (ard, zdf, vox, pro7, rtl2);
  Var AlleSndr: Set of TSndr;
  Begin
    Test := [zdf..pro7];
    If (rtl2 in Test) Then ShowMessage('ja')
    Else ShowMessage('nein');
  End;

es funktioniert beides

Hansa 24. Nov 2003 01:09

Re: Frage zu Menge
 
Im 2. Fall ist "Test" undfiniert. Das ist der eine Unterschied. :xmas: Wahrscheinlich haste ein paar Zeilen "unterschlagen". Aber, was wichtig ist: Typen dienen u.a. der Vereinheitlichung. Es ist besser einen Typ einmal zu deklarieren, als dauernd wieder neu. Schreibe also besser zentral einen Typ und weise diesen den Variablen zu:

Delphi-Quellcode:
type IntZahlen = [0..9];
..
var i,
    j : IntZahlen;
also es so zu machen:

Delphi-Quellcode:
var i : [0..9];
..
var j : [0..9];
Der Compiler behandelt beide Fälle zwar nicht gleich, aber das ist für Dich uninteressant.

himitsu 24. Nov 2003 01:30

Re: Frage zu Menge
 
Es gibt "keinen" Unterschied.

Bei der 1. Variante wird erst ein Typ (AlleSndr) deklariet und dann damit die Variable (Test) deklariert.

Bei der 2. Variante wird die Typendeklaration direkt der Variable zugewiesen.

Mit der globalen Typendeklaration (Variante 1) bei mehrmaliger Verwendung des selben Typs has Hansa schon recht.

Wenn aber ein Typ nur einmal verwendet wird, halte ich die 2. Variant besser und übersichtlicher.

Zitat:

Zitat von Hansa
Im 2. Fall ist "Test" undfiniert.

(Test ist definiert)

http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

Hansa 24. Nov 2003 02:33

Re: Frage zu Menge
 
Dann sage mir mal, wo bei dem zweiten
Delphi-Quellcode:
var test : blabla;
im Source steht :?:

himitsu 24. Nov 2003 09:55

Re: Frage zu Menge
 
http://www.mysmilie.de/smilies/schilder/3/img/010.gif (hab ich wohl ein Wort falsch gelesen)

Bei mir kam das so an:
Code:
[b]Var[/b] [color=red]Test[/color]: [b]Set of[/b] TSndr;

Das ist dann richtig:
Delphi-Quellcode:
Type TSndr = (ard, zdf, vox, pro7, rtl2);
  AlleSndr = Set of TSndr;

Var Test: AlleSndr;
  {weitererTest: AlleSndr;}
Delphi-Quellcode:
Type AlleSndr = Set of (ard, zdf, vox, pro7, rtl2);

Var Test: AlleSndr;
  {weitererTest: AlleSndr;}
Delphi-Quellcode:
Type TSndr = (ard, zdf, vox, pro7, rtl2);

Var Test: Set of TSndr;
Delphi-Quellcode:
Var Test: Set of (ard, zdf, vox, pro7, rtl2);
http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

Pseudemys Nelsoni 24. Nov 2003 15:39

Re: Frage zu Menge
 
danke für die antworten ;)

zu der sache das "Test := [zdf..pro7]; " nicht deklariert wurde.... ich habe bei dem beispiel ledeglich vergessen "test" in "AlleSndr" umzubenennen ;)


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