AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Eure Meinung: Syntaxerweiterung Set-Typen auf mehr als 255 Elemente
Thema durchsuchen
Ansicht
Themen-Optionen

Eure Meinung: Syntaxerweiterung Set-Typen auf mehr als 255 Elemente

Ein Thema von Codehunter · begonnen am 25. Jul 2018 · letzter Beitrag vom 25. Aug 2020
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#31

AW: Eure Meinung: Syntaxerweiterung Set-Typen auf mehr als 255 Elemente

  Alt 22. Aug 2020, 19:28
Ja, mit Variablen (festen Typen als Array) funktioniert es,
mein Problem bei dieser Variante liegt in der Nutzbarkeit.
Delphi-Quellcode:
if m96 in [m0, m128, m256, m512, m1024] then begin
  // Nein
end else if m512 in [m0, m128, m256, m512, m1024] then begin
  // Ja
end;
Leider wird hier ein SET generiert, es wird wegen der Grenzen gemeckert und der Operator mit dem ARRAY wird garnicht erst gesucht.

Man müsste das Array somit erstmal erzwingen.
Delphi-Quellcode:
if m96 in CreateArray([m0, m128, m256, m512, m1024]) then begin
  // Nein
end else if m512 in CreateArray([m0, m128, m256, m512, m1024]) then begin
  // Ja
end;

function CreateArray(const Values: array of Word): TArray<Word>;
Und das ist einfach nur umständlich.

Oder man baut eben die Contains-Funktion und verwendet kein IN, was aber auch unschön ist.
$2B or not $2B

Geändert von himitsu (22. Aug 2020 um 19:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#32

AW: Eure Meinung: Syntaxerweiterung Set-Typen auf mehr als 255 Elemente

  Alt 22. Aug 2020, 21:47
Wie gesagt, aus dem Gedächtnis. Ich könnte auch erst in drei Wochen nachschauen. Klar ist das umständlich. Mir wäre es auch lieber es gäbe größere set of. Oder man könnte class operatoren per Helper an einfache Arrays dranflanschen. Irgendwie mogelt man sich nur um das Problem herum und dieses Problem besteht einfach darin, ohne in-Operator sehr unschöne if-and-Blasen bauen zu müssen.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.456 Beiträge
 
Delphi 11 Alexandria
 
#33

AW: Eure Meinung: Syntaxerweiterung Set-Typen auf mehr als 255 Elemente

  Alt 25. Aug 2020, 12:44
Wir haben auch meisten kleinere Mengen. Grosse kommen auch mal vor und ich würde es begrüssen wenn auch die Sets mit den grösseren funktionieren würden. Auch das CharInSet nehmen zu müssen finde ich bescheuert. Und auch dass man bei case keine sets verwenden kann, selbst wenn Sie Konstanten sind.
Generell würde ich mir wünschen dass EMB Dinge einfach mal zu 100% implementiert und nicht meist irgendwelche Ausnahmen macht. Das hier und z.B. bei class helper constraints auf enums und sets, RTTI bei unechten enums, etc.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#34

AW: Eure Meinung: Syntaxerweiterung Set-Typen auf mehr als 255 Elemente

  Alt 25. Aug 2020, 17:22
Große Mengen sind auch relativ. (Ein Stein sagte mal sowas)

z.B. als Published-Property einer Komponente sind nur Integer (4 Byte) erlaubt behandelbar, womit dort ein SET schon ab nur 33 Werten zu groß wird,
denn der Default-Wert, der gespeicherte Wert in der DFM und die Propery-Editoren können nur die ersten 32 Bit aufnehmen/verarbeiten.
$2B or not $2B
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.456 Beiträge
 
Delphi 11 Alexandria
 
#35

AW: Eure Meinung: Syntaxerweiterung Set-Typen auf mehr als 255 Elemente

  Alt 25. Aug 2020, 18:28
Klar sind grosse Mengen relativ. Aber 32 oder 255 sind eindeutig heutzutage klein.
Und wenn jemand ein enum mit 2000 Elementen möchte ist klar, dass man dann 2000 Bits dazu benötigt. Ja und?
Warum man bei dfm nur 32-Bit nehmen kann verstehe ich nicht so ganz. String oder Images sind doch auch grösser. Wie dem auch sei - dann ist auch das nicht 100% umgesetzt. (Dass es historische Gründe gibt verstehe ich ja.)

Geändert von freimatz (25. Aug 2020 um 18:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#36

AW: Eure Meinung: Syntaxerweiterung Set-Typen auf mehr als 255 Elemente

  Alt 25. Aug 2020, 21:24
Das liegt in der RTTI.

Es wird nur ein Integer (NativeInt) zur Speicherung verwendet.
Dort drin ist dann entweder der Wert codiert (32 Bit) oder ein Funktionszeiger, falls man eine Stored-Funktion angibt.
Auch die Funktionen für den Property-Editpor haben nur 32 Bit für die SET-Funktionalitäten.
Theoretisch würde ja ein String auch dort rein passen, aber den kann man unterklärlicher Weise nicht "direkt" als DEFAULT angeben.
property Str: string read GetStr write SetStr default 'leer'; geht nicht, aber das kann man inzwischen (hässlich mehrzeilig) über ein Attribut [Default('leer')] erledigen.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 15:51 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