| Autor |
Beitrag |
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Di 04.03.03 19:55
Hallo!
Ich habe mal wieder ein kleines Problem: Ich würde gerne einzelne Optionen in einer Integer-Variablen speichern, so wie zum Beispiel der 2. Parameter Attr der Funktion FindFirst. Ich weiss net so recht wie ich es erklären soll, deshalb nenne ich jetzt ein Beispiel: In einer Garage dürfen 3 Autotypen stehen: Audi, BMW, Ford. Wie muss ich jetzt die Integerwerte für diese 3 Konstanten wählen, damit ich nachher überprüfen kann, welche Autos in der Garage stehen: Quelltext 1: 2: 3: 4: 5:
| aAudi = x; aBMW = y; aFord = z; if (AUTOS and aAudi) > 0 .... | Ich hoffe ich habt mich verstanden, ich wusste nicht wirklich wie ich es erklären sollte. Für den Titel ist mir auch nix besseres eingefallen, sorry deshalb...
Gruß wulfskin!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: Di 04.03.03 20:12
Hallo
meisnt du sowas?
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.Button1Click(Sender: TObject); type Tauto = (BMW,Audi,Ford); Var auto:TAuto; begin auto:=BMW; if auto=BMW then begin beep; end; end;
oder für mehrere Möglichkeiten
procedure TForm1.Button2Click(Sender: TObject); type Tauto = set of (BMW,Audi,Ford); Var auto : Tauto; begin auto:=[BMW,Ford]; if Bmw in auto then begin beep; end; end; |
Mfg Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Di 04.03.03 20:19
Ich bin mir auch nicht sicher, ob ich dich verstanden habe..Meinst du vielleicht, dass man mit einer Zahl alleine mehrere Boolean-Werte miteinander darstellen kann? Das würde folgendermassen gelöst:
BMW: 1
Audi: 2
Ford: 4
...: 2^x
Beispiel: (BMW and FORD) = 5
Hoffe ich habe dich richtig verstanden...
|
|
wulfskin 
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Di 04.03.03 20:37
Danke Mars!
Genau das meinte ich! Mal schauen ob es bei mir klappt..!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Di 04.03.03 21:35
IMHO arbeiten sets intern genauso.
Wenn dein problem ist, es als integer haben zu wollen, kannst auch...
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| type Tauto = set of (BMW,Audi,Ford); Var auto:TAuto; i : integer; begin auto:= [BMW,Ford]; i := word(auto); showMessage(intToStr(i)); end; |
...kannst dann sogar aus dem werten den enum-namen als string ableiten:
Quelltext 1: 2: 3:
| uses typInfo; ... s := GetEnumName(TypeInfo(TAuto), i); |
Sets haben halt besseren service
mfg mx.
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Mi 05.03.03 12:27
Hab ich das jetzt richtig verstanden: Elemente in Sets haben eine Reihenfolge? Das würde sich doch mit ihrer Definition widersprechen...
Genau weil sie keine Reihenfolge haben, kann man doch auch nicht mehrere gleiche Objekte einfügen...
Oder habe ich da etwas absolut missverstanden?
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Mi 05.03.03 15:02
| Zitat: | | Oder habe ich da etwas absolut missverstanden? |
Ja...aber nur das mit der Reihenfolge! Sets haben keine Reihenfolge...ich denke jedes Flag (wert) hat ein bit, das anzeigt, ob es sich im set befindet oder nicht! So gesehen haben die bits ne reihenfolge, aber das liegt in der natur der sache
Wie kommst du jetzt eigentlich drauf?
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Mi 05.03.03 22:39
Ich hab nur letzthin mit Sets gearbeitet bis mir am Schluss eingefallen ist, dass eine Reihenfolge der Elemente nicht schlecht wäre
Ich musste dann auf eine TObjectList umsteigen...
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Do 06.03.03 11:11
| Zitat: | | Ich musste dann auf eine TObjectList umsteigen... |
Das versteh ich jetzt wieder nicht...was haben sets mit objekten zu tun?
PS: Mir ist dort oben ein kleiner fehler unterlaufen...Ich kann den Enum-namen natürlich nur aus nem EnumTyp-wert ableiten und nicht aus nem set:
Quelltext 1: 2: 3: 4: 5:
| uses typInfo; ... typ TAuto = (AUDI, BMW, VW); ... s := GetEnumName(TypeInfo(TAuto),Word(BMW)); |
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Do 06.03.03 12:35
| maximus hat folgendes geschrieben: |
Das versteh ich jetzt wieder nicht...was haben sets mit objekten zu tun?
|
Nicht viel, deshalb bin ich ja auch umgestiegen... 
|
|