AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi wie kann man zwischen zwei SET´s unterscheiden
Thema durchsuchen
Ansicht
Themen-Optionen

wie kann man zwischen zwei SET´s unterscheiden

Ein Thema von bodycounter · begonnen am 28. Jan 2008 · letzter Beitrag vom 28. Jan 2008
Antwort Antwort
bodycounter

Registriert seit: 13. Jul 2004
12 Beiträge
 
#1

wie kann man zwischen zwei SET´s unterscheiden

  Alt 28. Jan 2008, 11:20
Hallo liebe Delphi User.

Ich habe ein Problem das ich nicht lösen konnte, ich hoffe einer von euch hat ne Idee.
Ich habe zwei SET´s mit teilweise gleichen Inhalt. Hier im Beispiel die Farbe Rot.

Delphi-Quellcode:
Farbenliste1 = Set of (Rot, Blau, Grün);
Farbenliste2 = Set of (Rot, Gelb, Orange);
Nun versuche ich mit "If in then" das Set abzufragen.
Delphi-Quellcode:
function rot_test:boolean;
Var
   Farben : Farbenliste2;
begin
   if Rot in Farben then result := true;
end;
Ich dachte das sollte klappen, weil ja die Variable Farben aus dem Set Farbenliste2 abgeleitet ist. Nun scheint der Compiler aber das Rot aus der Farbenliste1 zu nehmen und wirst mir einen "[Error] E2089 Invalid typecast" aus. Ist ja irgentwie auch richtig, weil das Rot aus Farbenliste1 nichts mit dem Rot aus der Farbenliste2 zu tun hat. Aber wie kann ich nun auf das Rot aus der Farbenliste2 prüfen? Hab es mit
if Farbenliste2.Rot in Farben then result := true; probiert, aber das klappt nicht.
Hat jemand eine Idee, wie man es richtig schreibt?

mfg Stefan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: wie kann man zwischen zwei SET´s unterscheiden

  Alt 28. Jan 2008, 11:41
Delphi-Quellcode:
type
    TFarben = Set of (Rot, Blau, Gruen, Orange);
Const
   Farbenliste1: TFarben = [ Rot, Blau, Gruen];
   Farbenliste2: TFarben = [ Rot, Blau, Orange];
Markus Kinzler
  Mit Zitat antworten Zitat
DelphiKlaus

Registriert seit: 18. Okt 2006
100 Beiträge
 
Delphi 6 Professional
 
#3

Re: wie kann man zwischen zwei SET´s unterscheiden

  Alt 28. Jan 2008, 11:55
Hallo,

ist das wirklich die Lösung?

Im ersten Beitrag ist Farbenliste1 eine Menge, die die Farben rot, blau und grün aufnehmen kann. Im zweiten Beitrag eine Menge, die diese Farben immer enthält. Oder versteh ich da was nicht?


Klaus
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: wie kann man zwischen zwei SET´s unterscheiden

  Alt 28. Jan 2008, 12:15
Du stellst deinem Rot, Blau und Grün noch ein zwei Buchstaben voran, welche sich auf die Farbeliste beziehen,
also:
Delphi-Quellcode:
Farbenliste1 = Set of (f1Rot, f1Blau, f1Grün);
Farbenliste2 = Set of (f2Rot, f2Gelb, f2Orange);
btw: Ich hätte sogar gedacht, dass der Compiler schon meckern würde bei der Deklaration von Farbenliste2.

Edit: Macht er auch
Zitat:
[Fehler] Unit1.pas(10): Bezeichner redefiniert: 'Rot'
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#5

Re: wie kann man zwischen zwei SET´s unterscheiden

  Alt 28. Jan 2008, 12:40
Hallo

Das folgenden wird bereits vom compiler als Fehler zurückgewiesen, da "Rot" redefiniert wird

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
type
  Farbenliste1 = Set of (Rot, Blau, Grün);
  Farbenliste2 = Set of (Rot, Gelb, Orange); //-> hier bereits compiler fehlermeldung!
Var
  Farben : Farbenliste2;
begin
...
Peter Schaible
  Mit Zitat antworten Zitat
bodycounter

Registriert seit: 13. Jul 2004
12 Beiträge
 
#6

Re: wie kann man zwischen zwei SET´s unterscheiden

  Alt 28. Jan 2008, 13:23
Hallo, danke schon mal für die Antworten.

Aber, so ist das immer wenn man pseudo Beispiel macht. Nartürlich sind die zwei SET´s nicht in der gleichen Unit difiniert.
Im echten Problem handelt es sich bei mir um das TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble); das sich in der Delphi eigenen Classes.pas befindet.
Dann hab ich noch eine 3. Anbieter Komponente installiert die folgendes SET in einer sgr_def.pas hat: Tsp_ShiftKeys=set of (ssShift, ssAlt, ssCtrl); Wie ihr seht ist ssShift, ssAlt, ssCtrl doppelt vergeben. Nun will ich einfach nur beim KeyUp Event prüfen ob die Shift Taste gedrückt war.
Delphi-Quellcode:
procedure Tform1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
   if ssShift in shift then irgentwas;
end;
Dabei kommt halt die Compiler Meldung [Error] E2008 Incompatible types, ist ja auch klar weil er ssShift aus der sgr_def.pas nimmt und für shift das aus der classes. Den Code aus der classes und der sgr_def will ich nartürlich nicht ändern. Irgentwelche vorschläge wie ich den compiler sagen kann, das er das ssShift aus der classes benutz?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: wie kann man zwischen zwei SET´s unterscheiden

  Alt 28. Jan 2008, 13:26
Ich würde jetzt auf "classes.ssshift" tippen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#8

Re: wie kann man zwischen zwei SET´s unterscheiden

  Alt 28. Jan 2008, 13:28
Schiet, zu langsam...
Applaus!!!
Ralph
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.106 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: wie kann man zwischen zwei SET´s unterscheiden

  Alt 28. Jan 2008, 13:35
Ein weitere Möglichkeit wäre wohl die Reihenfolge zu vertauschen, in der die beiden Units eingebunden werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
bodycounter

Registriert seit: 13. Jul 2004
12 Beiträge
 
#10

Re: wie kann man zwischen zwei SET´s unterscheiden

  Alt 28. Jan 2008, 13:45
DANKE!

Der Tipp mit "classes.ssshift" ist genau richtig.
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:43 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