AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi-Mengen (set of) in CSharp (C#)

Delphi-Mengen (set of) in CSharp (C#)

Ein Thema von Sascha L · begonnen am 31. Jan 2008 · letzter Beitrag vom 31. Jan 2008
Antwort Antwort
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#1

Delphi-Mengen (set of) in CSharp (C#)

  Alt 31. Jan 2008, 12:18
Hallo,

mit Delphi kann ich folgendes machen:

Delphi-Quellcode:
TSkipHour = 0..23;
TSkipHours = set of TSkipHour;
Damit ist es mir möglich, z.B. die Stunden 3, 5 und 10 in die Menge aufzunehmen und ich kann dann später überprüfen, welche Stunden ausgewählt wurden, also in der Menge drin sind.

Wie kann ich das nun in C# implementieren?

Mit einem enum und Flags müsste ich das ja total umständlich machen:

Code:
[Flags]
    enum SkipHour: uint
    {
        0 = 0x00000001,
        1 = 0x00000004,
        2 = 0x00000008
        // usw....
    }
Bleibt mir da also nichts anderes übrig, als z.B. eine Boolean-Liste zu verwenden, wo ich für 0 bis 23 immer true oder false setze?

Viele Grüße
Sascha
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.000 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Delphi-Mengen (set of) in CSharp (C#)

  Alt 31. Jan 2008, 12:33
Ist nicht Set Of eine Delphi-Spezialität die keine andere Programmiersprache so elegant realisiert?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#3

Re: Delphi-Mengen (set of) in CSharp (C#)

  Alt 31. Jan 2008, 12:35
Wäre es so kompliziert, ein uint zu verwenden und die Bits als bools?

Code:
uint myset = 0;
myset |= (1 << 8); // Setzt Stunde 8
myset &= ~(1 << 8); // Löscht Stunde 8
myset & (1 << 8) > 0; // Testet, ob Stunde 8 gesetzt ist
Das ganze zur Not in eine kleine (eventuell generische) Klasse/Struktur packen und gut. Hatte so etwas mal in C++ geschrieben, aber das war spezialisiert auf ein bestimmtes Datenformat für einen Mikrocontroller.

@Roter Kasten:
Die C++-STL kennt set als generische Container-Klasse. Ist natürlich kein Sprachfeature, kann dafür aber alles aufnehmen. Aber ansonsten ist das wohl so.

Edit: Es gibt übrigens auch System.Collections.BitArray. Das macht ja im Prinzip schon all das.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Delphi-Mengen (set of) in CSharp (C#)

  Alt 31. Jan 2008, 12:40
Zitat von Sascha L:
Bleibt mir da also nichts anderes übrig, als z.B. eine Boolean-Liste zu verwenden, wo ich für 0 bis 23 immer true oder false setze?
Dafür gibt es System.Collections.BitArray, ganz so schön wie Sets ist es dann natürlich immer noch nicht.

[edit]
Zitat von OregonGhost:
@Roter Kasten:
Bah, warum bekommst den nur du ?
Zitat:
Die C++-STL kennt set als generische Container-Klasse. Ist natürlich kein Sprachfeature, kann dafür aber alles aufnehmen. Aber ansonsten ist das wohl so.
Mit 3.5 gibt es nun auch System.Collections.Generics.HashSet<T>. In diesem Fall ist ein Bitvektor natürlich kompakter, falls das bei 24 Werten wirklich jemanden stören sollte .
[/edit]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Delphi-Mengen (set of) in CSharp (C#)

  Alt 31. Jan 2008, 13:17
Ok, danke Leute. Werde dann also ein Bit-Array verwenden, das ist ja im Prinzip das, was ich auch schon als einzige Lösung gesehen haben, dass ich eine Liste habe, wo ich die Werte true und false habe.
Sascha
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf