Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ungewohntes Konstrukt (https://www.delphipraxis.net/207695-ungewohntes-konstrukt.html)

Delbor 23. Apr 2021 11:04

Delphi-Version: 10.4 Sydney

Ungewohntes Konstrukt
 
Hi zusammen

Ich setze in einer TGridPanel-Testanwendung diesen Code ein, um mehr über die Verwendung des TGridpanel zu erfahren.

Dabei bin ich auf ein eher ungewöhnliches Konstrukt gestossen:
Delphi-Quellcode:
    for i := 0 to -1 + rowCount * colCount do
    begin
    ...
    end;
Dabei denke ich, hat weder rowCount noch ColCount hier einen bestimmten Einfluss. Die Anweisung könnte genausugut heissen:
Delphi-Quellcode:
    rw := rowCount * colCount;
    for i := 0 to RW -1 do
      begin
      ...
      end;
Zumindest würde ich dies als wesentlich lesbarer erachten als die erste Form und die inzwischen ja verpönten with-Blöcke. Als ich die eliminieren wollte, hab ich einige Verständnisfehler gemacht, so dass am Schluss gar nichts mehr lief...

Gruss
Delbor

Blup 23. Apr 2021 12:32

AW: Ungewohntes Konstrukt
 
Ich würde eher so schreiben, aber das ist Geschmacksache.
Delphi-Quellcode:
     for i := 0 to rowCount * colCount - 1 do
     {...}
So sparsam und übersichtlich wie "with" dort eingesetzt wurde, kann man auch nichts gegen sagen.

Rolf Frei 23. Apr 2021 12:35

AW: Ungewohntes Konstrukt
 
Da gebe ich dir recht. Aber eien Variable zu nutzen uisit denncoh überflüssig um es besser lesbar zu machen. Ich würde sowas immer so schreiben:
Delphi-Quellcode:
 
for i := 0 to (rowCount * colCount) - 1 do // die () sind eigentlich überflüssig, helfen aber der Lesbarkeit
begin
 ...
end;

KodeZwerg 23. Apr 2021 12:43

AW: Ungewohntes Konstrukt
 
Zitat:

Zitat von Rolf Frei (Beitrag 1487686)
Da gebe ich dir recht. Aber eien Variable zu nutzen uisit denncoh überflüssig um es besser lesbar zu machen. Ich würde sowas immer so schreiben:
Delphi-Quellcode:
 
for i := 0 to (rowCount * colCount) - 1 do // die () sind eigentlich überflüssig, helfen aber der Lesbarkeit
begin
 ...
end;

Da bin ich auf Deiner Seite. Eine extra definition für diese komplexe Formel ist überflüssiger Balast, es sei denn man benötigt diesen Wert woanders noch mal.

Delbor 23. Apr 2021 13:08

AW: Ungewohntes Konstrukt
 
Hi Blub
Zitat:

So sparsam und übersichtlich wie "with" dort eingesetzt wurde, kann man auch nichts gegen sagen.
Ich hab den Code, wie ich ihn bei mir habe (im Original), mal in einen abgeänderten Prozedurkopf gepackt, und prompt hat sich ein end zuviel eingeschlichen. Kann aber schon sein, dass die Lese- und Schreibgewohnheiten des Verfassers da mitspielen (Natürlich tun sie das!).

Auch sparsam eingesetzte with-Blöcke können Quellen schwer auffindbarer fehler sein:
Delphi-Quellcode:
 with PanelX do begin
   Caption := 'XXXXXXXXXX';
   Length := 555;
   Text := Caption +'2';
 end;
Zugegeben, dieser Fehler dürfte so wohl eher einem Anfänger unterlaufen. Aber so kannst du auch vollkommen überflüssige Codezeilen einsparen und erhöhstdabeidie Lesbarkeit:
Zitat:

PanelX.Caption := 'XXXXXXXXXX';
PanelX.Length := 555;
PanelX.Text := Caption +'2';
So sparst du allein hier 2 Zeilen Code. Mit all den andern Wih-Blöcken summiert sich das nicht unwesentlich.
Übrigens ist dies wohl eine der wenigen Situationen, wo Copy&Paste ("PanelX.") erlaubt, bezw. sinnvolll ist. ist. Aber schlussendlich: jedem das Seine...

Zitat:

Zitat von KodeZwerg (Beitrag 1487688)
Zitat:

Zitat von Rolf Frei (Beitrag 1487686)
Da gebe ich dir recht. Aber eien Variable zu nutzen uisit denncoh überflüssig um es besser lesbar zu machen. Ich würde sowas immer so schreiben:
Delphi-Quellcode:
 
for i := 0 to (rowCount * colCount) - 1 do // die () sind eigentlich überflüssig, helfen aber der Lesbarkeit
begin
 ...
end;

Da bin ich auf Deiner Seite. Eine extra definition für diese komplexe Formel ist überflüssiger Balast, es sei denn man benötigt diesen Wert woanders noch mal.

Danke euch Allen! Mit den gesetzten Klammern ist das viel leichter lesbar, finde ich.

Gruss
Delbor

Andreas13 23. Apr 2021 13:58

AW: Ungewohntes Konstrukt
 
Zitat:

Zitat von Delbor (Beitrag 1487691)
Auch sparsam eingesetzte with-Blöcke können Quellen schwer auffindbarer fehler sein:
Delphi-Quellcode:
 with PanelX do begin
   Caption := 'XXXXXXXXXX';
   Length := 555;
   Text := Caption +'2';
 end;

Die Verwendung von
Delphi-Quellcode:
With ... End;
verhindert darüber hinaus auch noch die Möglichkeit einer Inspektion der Variablenwerte im Debugger.
Gruß, Andreas

himitsu 23. Apr 2021 20:27

AW: Ungewohntes Konstrukt
 
Delphi-Quellcode:
var P := PanelX; // oder sonstwas ... seit 10.4
P.Caption := 'XXXXXXXXXX';
P.Length := 555;
P.Text := P.Caption +'2';

TurboMagic 24. Apr 2021 16:14

AW: Ungewohntes Konstrukt
 
Die Inline Variablen Deklaration geht auch schon seit 10.3.3, wenn
mann dann die ErrorInsight Fehler die das verursacht ignoriert ;-)

Ab 10.4 sind die dann aber weg, weshalb die 10.4 Empfehlung natürlich
verständlich ist. ;-)

himitsu 24. Apr 2021 17:52

AW: Ungewohntes Konstrukt
 
und vorgestellt wurde es ja auch erst 10.4, al s eines der neusten coolsten features :angle:

aber beser als ein with ist es definitiv.


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