Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - type , set of type mit mehr als 255 Elementen


trm - Fr 18.04.14 13:50
Titel: type , set of type mit mehr als 255 Elementen

Delphi-Quelltext
1:
2:
3:
type
  Tmeintest = 0 .. 255;
  TmeintestSet = set of Tmeintest;


Funktioniert. Aber wenn ich nun mal statt 256 1024 Elemente benötige, klappt das nicht. Wie müsste das dann gemacht werden, ohne multidimensionale Typen erstellen zu müssen?


mandras - Fr 18.04.14 14:10

Delphi stellt Sets intern als max. 32Byte-Arrays dar, 32*8Bit=256 Elemente.

Wenn Du mehr brauchst, wirst Du nicht umhin kommen, selber diese Bitmap-Operationen nachzubauen auf größeren Arrays.
Wie viel Aufwand dabei betrieben werden muß, hängt vom konkreten Einzelfall ab.
Solange nicht riesig viele dieser Sets benötigt werden (Speicherbedarf), wäre eine Abbildung z.B. auf ein Array of Boolean möglich.
Natürlich fehlen dann die schönen Mengenoperatoren, hier müßte man dann von Hand nachbauen was gerade gebraucht wird.


trm - Fr 18.04.14 15:04

user profile iconmandras hat folgendes geschrieben Zum zitierten Posting springen:
Natürlich fehlen dann die schönen Mengenoperatoren, hier müßte man dann von Hand nachbauen was gerade gebraucht wird.



Das ist der Knackpunkt.

Ich behelfe mich dann einfach anders, indem ich eine Menge an Sets deklariere und per Teiler diese Sets über ein Array ansprechen werde.
Danke für die Info.


Horst_H - Sa 19.04.14 11:17

Hallo,

bei Freepascal gibt es TBits
http://www.freepascal.org/docs-html/rtl/classes/tbits.html
Die Mengenoperationen kann man wohl nachbauen.

Vereinigungsmenge: M = A OR B,
Schnittmenge: M = A AND B
A ohne B: M = A AND NOT B )
Elemente die nur in A oder in B sind: M = A XOR B

Gruß Horst


trm - Sa 19.04.14 11:51

Huhu Horst,

danke. Aber für meine bescheidenen Programmierkenntnisse ist das zu aufwendig.

Schöne Ostern :)


SMO - So 20.04.14 23:06

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
bei Freepascal gibt es TBits


Bei Delphi auch schon länger [http://www.delphibasics.co.uk/RTL.asp?Name=TBits]. Da gibt es zwar die Mengenoperatoren nicht, aber es ist nicht schwierig, die selbst zu implementieren.