Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   F2084 beim kompilieren in Win32 (https://www.delphipraxis.net/213121-f2084-beim-kompilieren-win32.html)

Der schöne Günther 31. Mai 2023 07:07

AW: F2084 beim kompilieren in Win32
 
Zitat:

Zitat von BigAl (Beitrag 1522918)
Vergleich auf Gleicheit (oder Ungleichheit) sollte bei einfachen Typen ja immer gehen. SizeOf(T) und dann schauen ob da die gleiche Byte-Folge steht sollte ja grundsätzlich kein Problem darstellen.

Genau das macht ja der Default-Equality-Comparer. Ist aber wirklich nicht unbedingt was man haben will. Hast du bspw. zwei Float-Werte, betrachtest du die in der Regel als gleichwertig, wenn sie auf den ersten x Nachkommastellen gleich sind. Oder bei einem Record - Da reicht es schon, wenn die unsichtbaren "Padding"-Bytes zwischen Feldern unterschiedlich sind. Oder zwei unterschiedliche Strings, aber mit gleichem Inhalt. Oder...

BigAl 31. Mai 2023 07:17

AW: F2084 beim kompilieren in Win32
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1522919)
Genau das macht ja der Default-Equality-Comparer. Ist aber wirklich nicht unbedingt was man haben will. Hast du bspw. zwei Float-Werte, betrachtest du die in der Regel als gleichwertig, wenn sie auf den ersten x Nachkommastellen gleich sind. Oder bei einem Record - Da reicht es schon, wenn die unsichtbaren "Padding"-Bytes zwischen Feldern unterschiedlich sind. Oder zwei unterschiedliche Strings, aber mit gleichem Inhalt. Oder...

Naja. Bei Float-Werten auf Gleichheit nimmt man halt normalerweise "SameValue". Schon klar, dass das derzeit nicht unbedingt funktioniert. Aber zumindest könnte man bei der Einschränkung "Zahl" dann alle anderen Operatoren (>, <, +, - etc.) verwenden, was ja aktuell bei generischen Typen nicht so ohne weiteres geht. Dafür ist aber der Delphi-Compiler (im Vergleich z.B. zu C++) sauschnell :-).

jaenicke 31. Mai 2023 07:27

AW: F2084 beim kompilieren in Win32
 
Zitat:

Zitat von BigAl (Beitrag 1522918)
Wäre halt cool, wenn man bei genrics die Typen einschränken könnte.

Mit entsprechenden Constraints geht das ja prinzipiell. Allerdings gibt es noch keine Möglichkeit auf Zahlenwerte oder ähnliches einzuschränken, sondern nur auf bestimmte Interfaces, parameterlose Konstruktoren (um den Typ instantiieren zu können) und so weiter.

Ich wäre auch sehr dafür, wenn die Constraints weiterentwickelt würden. Da fehlt auch noch ein wenig hinsichtlich Weitergabe der Constraints beim erneuten Einsatz eines generischen Typs als generischer Parameter usw.

Uwe Raabe 31. Mai 2023 08:15

AW: F2084 beim kompilieren in Win32
 
Meines Wissens kann immer auf gleich oder ungleich getestet werden. Ob dann am Ende das Ergebnis der Erwartung entspricht ist eine andere Sache.

BigAl 31. Mai 2023 08:16

AW: F2084 beim kompilieren in Win32
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1522923)
Meines Wissens kann immer auf gleich oder ungleich getestet werden. Ob dann am Ende das Ergebnis der Erwartung entspricht ist eine andere Sache.

Uwe fasst es wir immer zusammen. Genau das habe ich gemeint :-).

himitsu 31. Mai 2023 10:45

AW: F2084 beim kompilieren in Win32
 
Zitat:

Zitat von BigAl (Beitrag 1522918)
Vergleich auf Gleicheit (oder Ungleichheit) sollte bei einfachen Typen ja immer gehen.

Es ist aber möglich, dass man hier sonstwas rein gibt, wie z.B. auch Records oder Arrays.
Und der generische Code ist immer auf das Minimale ausgelegt.

BigAl 31. Mai 2023 10:52

AW: F2084 beim kompilieren in Win32
 
Zitat:

Zitat von himitsu (Beitrag 1522925)
Zitat:

Zitat von BigAl (Beitrag 1522918)
Vergleich auf Gleicheit (oder Ungleichheit) sollte bei einfachen Typen ja immer gehen.

Es ist aber möglich, dass man hier sonstwas rein gibt, wie z.B. auch Records oder Arrays.
Und der generische Code ist immer auf das Minimale ausgelegt.

Ein Record oder ein Array ist ja auch kein "einfacher Typ" laut Deklaration (hier). Mir würde es schon reichen wenn ich meine Generics auf einfache Typen einschränken könnte und dafür dann mehr Freiheit hätte. Das würde mir schon enorm helfen.

himitsu 31. Mai 2023 11:07

AW: F2084 beim kompilieren in Win32
 
Es geht leider nur für "aufwändigere" Typen ("record" oder "constructor") einzuschränken, bzw. für explizit angegebene Typen.
https://docwiki.embarcadero.com/RADS...ts_in_Generics

Sowas wie z.B. "ordinal" (Integer, Boolean, Byte, Char, ....), "numeric" (ordinal und Floats) oder "string" sowie "noreferences" geht leider nicht.

freimatz 1. Jun 2023 11:34

AW: F2084 beim kompilieren in Win32
 
Und auch nicht Aufzählungstypen. Wir könnten sooo viel Code sparen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr.
Seite 2 von 2     12   

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