AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mengentypen (set?) zur Laufzeit füttern

Ein Thema von messie · begonnen am 5. Nov 2009 · letzter Beitrag vom 5. Nov 2009
Antwort Antwort
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

Mengentypen (set?) zur Laufzeit füttern

  Alt 5. Nov 2009, 19:40
Moin,

die Mengentypen mögen mich nicht oder ich sie nicht
Ich habe eine Ansammlung von integers, die ich mit geringem Aufwand parsen möchte.
Also etwa mit
Delphi-Quellcode:
if check in [1,28,34,99] then
begin
  //Code
end;
Die Menge der Zahlen in der Klammer ist so groß, dass sie irgendwo anders deklariert werden muss.
Der Vergleich kann auch als string stattfinden, weil ich die Fehlercodes so geliefert bekomme.
Noch schöner wäre es, wenn ich einen Mengentyp zur Laufzeit aus einer ini füttern könnte.

Was ist da der sinnvollste Ansatz?

Den Weg über eine array-Prüfung könnte ich natürlich gehen, aber den Umgang mit den Mengentypen würde ich da gerne ausloten. Ich gehe mal davon aus, dass die Performance da höher ist (sind schon einige Daten zu prüfen).

Ach ja, man braucht ja jetzt manchmal den Disclaimer: bitte nur ernstgemeinte Zuschriften unter ...


Grüße, Messie
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Mengentypen (set?) zur Laufzeit füttern

  Alt 5. Nov 2009, 19:59
Die Sets werden unter Delphi soweit ich weiß mit Bitmasken realisiert. Wenn du das für größere Werte nachbauen willst, könntest du dir die Klasse TBits anschauen. Aber bedenke, dass die Daten in dieser Form, sehr, sehr groß werden. Ein Integer hat 32Bit, das heißt er kann Werte von 0 bis 4 294 967 295 darstellen. Für jeden dieser Werte brauchst du bei der Bitmaske ein Bit, somit wäre die Bitmaske für einen 32Bit-Integer nach meiner Rechnung über 500MB groß! Ich weiß nicht, ob du das wirklich willst...
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Mengentypen (set?) zur Laufzeit füttern

  Alt 5. Nov 2009, 20:44
Wenn ich das richtig verstanden habe, sind die Mengentypen nur dann sinnvoll und auch schneller, wenn ein einzelnes Element nicht größer als ein Byte (oder Word?) ist. Das würde zu den Beispielen passen, die in der OH stehen.
Was mich etwas irritert, ist, dass der Compiler Ordinaltypen verlangt. Und die dürfen ja schon größer als ein Word sein, akzeptieren aber laut OH keine In64-Typen ( ord() ).

Hmm, so richtig schlüssig ist das für mich noch nicht. Vielleicht fehlt in der OH dort die Angabe der Grenzen.
Dann nehme ich wohl doch erstmal das array.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Mengentypen (set?) zur Laufzeit füttern

  Alt 5. Nov 2009, 21:03
Ordinale Typen sind eigentlich 1 Byte große Typen wie Byte oder Char. (Nein, dass ist nicht die korrekte Definition - ich weiß..)

Word/Cardinal/Integer/Int64 etc sind keine Ordinalen Typen. Genau wie Strings.

Wieso nimmst du kein Array?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Mengentypen (set?) zur Laufzeit füttern

  Alt 5. Nov 2009, 21:18
Zitat von Neutral General:
Wieso nimmst du kein Array?
Ich nehme jetzt schon ein array.
Ich hatte in Richtung Performance gedacht, deshalb die Frage nach Mengentypen.
Die zu analysierende Datenmenge wird halt recht groß...

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Mengentypen (set?) zur Laufzeit füttern

  Alt 5. Nov 2009, 21:21
Ich glaube Mengen wären in dem Fall nur im Code praktischer und leichter zu handhaben. Performanter wären die glaube ich nicht.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Mengentypen (set?) zur Laufzeit füttern

  Alt 5. Nov 2009, 21:40
Ordinal heisst lediglich "geordnet abzählbar", d.h. die Werte haben einen Rang, einen definierten und gleichmäßigen Abstand, und man kann sie nacheinander "aufsagen". Folglich sind soweit alle Ganzzahltypen in Delphi ordinal. Mal nur so am rande, weil's mir auffiel
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Mengentypen (set?) zur Laufzeit füttern

  Alt 5. Nov 2009, 21:56
Bis 256 gehts sehr schnell mit Sets. Ansonsten könntest Du es mit einer Hashliste (siehe: Hier im Forum suchencsDictionary) probieren.

Viele Grüße
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Mengentypen (set?) zur Laufzeit füttern

  Alt 5. Nov 2009, 22:05
Zitat von Medium:
Ordinal heisst lediglich "geordnet abzählbar", d.h. die Werte haben einen Rang, einen definierten und gleichmäßigen Abstand, und man kann sie nacheinander "aufsagen". Folglich sind soweit alle Ganzzahltypen in Delphi ordinal. Mal nur so am rande, weil's mir auffiel
Ach ja.. Was ich meinte war, dass Sets nur mit 1-Byte Datentypen gehen..
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: Mengentypen (set?) zur Laufzeit füttern

  Alt 5. Nov 2009, 23:24
Zitat von Neutral General:
Performanter wären die glaube ich nicht.
Öhm, doch . O(1) vs. O(n), um ein Element zu finden, kann schon einen großen Unterschied machen. Die von mirage228 erwähnte Hashliste schafft im Normalfall ebenfalls O(1).
Sebastian
Moderator in der EE
  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 07:03 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