Genau das ist doch der Punkt. Ist die Fläche leer? Ja. Gibt TRectF.Empty() eine leere Fläche zurück? Ja. Mit dem Code ist alles in Ordnung und die Namen passen auch.
Ja, das sehe ich auch so, allerdings sagt IsEmpty möglicherweise nicht deutlich genug, dass es NUR um die Fläche geht und nichts anderes, zumal Empty = (0,0,0,0) setzt.
Diesen Konflikt meine ich, speziell (0,0,0,0) deutet darauf hin, dass auch das IsZero gemeint sein könnte.
Zweckentfremdest du TRectF für etwas anderes? Ja.
Genau, ich speichere dort die Insets, das sind mehr oder weniger Margins, weil das von anderen Libraries dafür genommen wird.
Im Prinzip finde ich das TRectF dafür in Ordnung, wegen Left / Top / Right / Bottom, obwohl es natürlich besser ein TMargins sein sollte.
Mach dir doch deine eigene Struktur und benenne die Felder innen drin auch für das, was sie ausdrücken. Deinen bestehenden Code musst du auch nicht umschreiben, du kannst
deiner eigenen Struktur doch eine Operator-Überladung verpassen, mit welcher sie implizit in ein TRectF konvertiert wird.
Danke für die Vorschläge, meine Lösung ist es einen TRectF-Helper mit Zero / IsZero für das RectF anzulegen.
Damit komme ich klar.
Nach meiner Definition ist: Zero - es geht um 0,0,0,0 und Empty - es geht um Fläche.
Mir ging es mehr um die Konflikte mit der Namensgebung.
Würdest Du im oben genannten Fall auf z.B. TMargins (ist aber eine Klasse meines Wissens) oder noch besser ein TInsets Record umsteigen,
selbst wenn es auf TRectF ausgelegt ist ?
In diesem Fall kommt das aus einer externen Library, aber ich selber missbrauche auch gerne die Delphi Basic-Typen für solche naheliegende Fälle.
Das ist meine Frage: "Missbraucht" Ihr solche Basistypen (TRect, TPoint, TSize, ...) auch manchmal, oder seid ihr IMMER strikt Namenskonform ?
Das richtige Festlegen von Namen ist manchmal eine Qual