![]() |
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? |
Re: Frage zu Menge
Ein Hallöle von
![]() Natürlich ist rtl2 nicht in Test enthalten. Denn du füllst Test mit den Werten von vox bis pro7
Delphi-Quellcode:
Und in diesem Bereich liegen ja nur vox und pro7, aber eben nicht rtl2.
test := [vox..pro7];
Delphi-Quellcode:
zdf, vox & pro7 sind in Test enthalten / ard & rtl2 ist nicht in Test enthalten.
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; http://www.delphipraxis.net/images/common/divider.jpg ![]() ![]() ![]() |
Re: Frage zu Menge
ah, danke :D
noch eine frage, was ist der unterschied bei:
Delphi-Quellcode:
und:
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;
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 |
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:
also es so zu machen:
type IntZahlen = [0..9];
.. var i, j : IntZahlen;
Delphi-Quellcode:
Der Compiler behandelt beide Fälle zwar nicht gleich, aber das ist für Dich uninteressant.
var i : [0..9];
.. var j : [0..9]; |
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:
http://www.delphipraxis.net/images/common/divider.jpg ![]() ![]() ![]() |
Re: Frage zu Menge
Dann sage mir mal, wo bei dem zweiten
Delphi-Quellcode:
im Source steht :?:
var test : blabla;
|
Re: Frage zu Menge
![]() 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:
http://www.delphipraxis.net/images/common/divider.jpg
Var Test: Set of (ard, zdf, vox, pro7, rtl2);
![]() ![]() ![]() |
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