Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Fehler in TRect::SplitRect? (https://www.delphipraxis.net/196587-fehler-trect-splitrect.html)

Der schöne Günther 1. Jun 2018 11:20

Delphi-Version: 10 Seattle

Fehler in TRect::SplitRect?
 
Der zweite Parameter von
Delphi-Quellcode:
SplitRect
heißt
Delphi-Quellcode:
Percent
. (Doku)


Delphi-Quellcode:
uses System.Types;

procedure p();
var
   a, b: TRect;
begin
   a := TRect.Create(0, 0, 100, 100);
   b := a.SplitRect(TSplitRectType.srLeft, {Percent=}50.0);

   Assert( b.Left = 0 );
   Assert( b.Top = 0 );
   Assert( b.Bottom = 100 );
   Assert( b.Right = 50 ); // b.Right == 5000
end;
Könnte jemand kurz prüfen ob das in der grade aktuellen Version immer noch so ist?

Fritzew 1. Jun 2018 11:28

AW: Fehler in TRect::SplitRect?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1403616)
Der zweite Parameter von
Delphi-Quellcode:
SplitRect
heißt
Delphi-Quellcode:
Percent
. (Doku)
Delphi-Quellcode:
uses System.Types;
procedure p();
var
   a, b: TRect;
begin
   a := TRect.Create(0, 0, 100, 100);
   b := a.SplitRect(TSplitRectType.srLeft, {Percent=}50.0);

   Assert( b.Left = 0 );
   Assert( b.Top = 0 );
   Assert( b.Bottom = 100 );
   Assert( b.Right = 50 ); // b.Right == 5000
end;
Könnte jemand kurz prüfen ob das in der grade aktuellen Version immer noch so ist?

Aus der von Dir verlinkten Doku:
Zitat:

Percent definiert den Teil des aktuellen Rechtecks, der gelöscht oder hinzugefügt werden soll. Das bedeutet, dass SplitRect die SplitType-Seite in den angegebenen Percent verschiebt. 0 entspricht null Prozent. 1 entspricht 100% Prozent. Wenn Percent positiv ist, dann wird die SplitType-Seite in Richtung des aktuellen Rechtecks verschoben. Andernfalls wird die SplitType-Seite vom aktuellen Rechteck weg verschoben.

Der schöne Günther 1. Jun 2018 14:51

AW: Fehler in TRect::SplitRect?
 
Stimmt, nachträglich einfach die Doku anpassen statt den Parameter richtig zu benennen ist auch eine Lösung 8-)

Danke für den Hinweis. In meiner lokalen Hilfe ist noch die alte Fassung von 2012, da steht das noch nicht.

haentschman 2. Jun 2018 06:01

AW: Fehler in TRect::SplitRect?
 
Moin...8-)
Mit der https://www.delphipraxis.net/dp_reference.php wäre das nicht passiert.:zwinker:

dummzeuch 2. Jun 2018 09:08

AW: Fehler in TRect::SplitRect?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1403647)
Stimmt, nachträglich einfach die Doku anpassen statt den Parameter richtig zu benennen ist auch eine Lösung 8-)

Einen solchen Bug zu fixen ist nicht ungefährlich, weil es immer Leute gibt, die sich auf die Implementation verlassen haben. Da kann es durchaus sinnvoll sein, einfach die Dokumentation anzupassen (und evtl. den Parameter umzubenennen).

Der schöne Günther 2. Jun 2018 10:30

AW: Fehler in TRect::SplitRect?
 
Den Parameter richtig zu benennen würde doch schon reichen.

mkinzler 2. Jun 2018 10:36

AW: Fehler in TRect::SplitRect?
 
Eine Angabe eines Faktors findet an vielen Stellen statt. Hat sich an dieser Stelle auch nicht geändert.

Rollo62 2. Jun 2018 18:33

AW: Fehler in TRect::SplitRect?
 
Bei Prozent gehe ich auch immer erstmal von Beiden Optionen aus
0 ... 1 oder 0 ... 100.
Ist für mich i.d.R. erstmal gleichwertig möglich.

Bevorzugen tue ich 0 ... 1 weil sich das mathematisch sinnvoller Nutzen lässt.

Wie wäre denn die richtige, offizielle Bezeichnung von 0 ... 1 ?
Vielleicht Prozentfaktor ?

KodeZwerg 2. Jun 2018 19:07

AW: Fehler in TRect::SplitRect?
 
False / True Off / On ... = 0 / 1

Bei Prozent geh ich von 0 bis 100 aus, weil es irgendwie mehr Sinn ergibt.

Uwe Raabe 2. Jun 2018 20:36

AW: Fehler in TRect::SplitRect?
 
Zitat:

Zitat von KodeZwerg (Beitrag 1403711)
False / True Off / On ... = 0 / 1

Auch, wenn es sich um einen Double-Wert handelt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 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