![]() |
Problem mit Mengendeklaration/Aufzählungstyp
Nabend!
Also ich habe hier ein Problem bei der Mengen/Augfzählungsdeklaration in Delphi. Vielleicht kann mir da mal jemand helfen? Ich habe folgende Constanten Stringwerte '109', '108' und '24'. Ich möchte das Sinngemäß so haben. Tteilmenge1 = '109', '108'; Tteilmenge2 = '24'; Tgesamtmenge = (Tteil1 + Tteil2), also dann '109', '108', '24' wie könnte ich das in Delphi umsetzen! Momentan kackt mich der Compiler mit Typfehlermeldungen zu. Denke mal es liegt wohl an der fortgeschrittene Uhrzeit. |
Re: Problem mit Mengendeklaration/Aufzählungstyp
Zitat:
Gegenfrage, handelt es sich bei den Mengen um Strings oder Zahlen ? |
Re: Problem mit Mengendeklaration/Aufzählungstyp
Delphi-Quellcode:
Const
Teilmenge1 = [109,108]; Teilmenge2 = [24]; Var Vereinigungsmenge, Schnittmenge : Set Of Byte; Begin Vereinigungsmenge := Teilmenge1+Teilmenge2; Schnittmenge := Teilmenge1*Teilmenge2; End; |
Re: Problem mit Mengendeklaration/Aufzählungstyp
Es handelt sich um Strings ich würde auch gerne Strings verwenden, aber das sind erstens keine Ordinalen Typen und
zweitens benötige ich mehr als 256 Werte. Ich benötige also sowas wie ein set of string (gibt es glaube ich nicht in delphi) und dieses set soll aus den einzelnen constanten stringwerten bestehen. Also '109', '108', '24', ect. ect. Dann würde ich gern Teilmengen definieren die nur bestimmte stringkonstanten aus der gesamtmenge beinhalten. Und später im Programm dann so abfragen
Delphi-Quellcode:
Also ich würde hier nur den Weg über array construkte sehen, aber vielleicht geht es ja auch irgendwie einfacher?
if '109' in teilmenge1 then do something
if '109' in teilmenge2 then do was anderes Jemand ne idee? |
Re: Problem mit Mengendeklaration/Aufzählungstyp
Könntest Du das nicht elegant mit Stringlisten lösen?
Delphi-Quellcode:
if Liste1.IndexOf('109') > -1 then MachWas();
if Liste2.IndexOf('109') > -1 then MachWasAnderes(); |
Re: Problem mit Mengendeklaration/Aufzählungstyp
@DeddyH
stimmt, das wäre möglich und auch bestimmt elegant. Gibt es eine Möglichkeit die Stringlist anders mit den Konstanten zu füllen als über die Methode add? Also eventuell ohne Schleife? |
Re: Problem mit Mengendeklaration/Aufzählungstyp
Dazu hab ich momentan leider keinen genialen Einfall.
|
Re: Problem mit Mengendeklaration/Aufzählungstyp
Hallo Richard,
vielleicht kannst du es so versuchen:
Delphi-Quellcode:
Gruß Hawkeye
var
SL : TStrings; begin SL := TStringList.Create; SL.CommaText := '10,20,30,40,50'; SL.Free; end; |
Re: Problem mit Mengendeklaration/Aufzählungstyp
@All
Habe es jetzt mit Arrays of String und AnsiIndexStr gelöst. Klappt wunderbar! Hat den Vorteil, das ich die einzelnen Stringwerte als Konstanten direkt dem Array zuweisen kann und spart eine Menge Code&Overhead gegenüber den Stringlisten (keine Add Schleifen bei der Wertzuweisung, keine try Construkte, Kein Vergessen die Stringlist wieder freizugeben ect) und ist durch AnsiIndexStr genauso elegant. Danke nochmal an alle für eure Tips! :) //Edit @Hawkeye219 Sieht auch recht sauber und übersichtlich aus. Ist aber zusätzlicher Code im Implementation Teil, und ich müsste das ganze 5 mal machen. Weil ich ja wie gesagt betsimmte Teil-"Mengen" habe und für jede eine liste brauche. Trotzdem danke auch für deinen Hinweis ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz