Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Delphi 13 - Ternary Operator

  Alt Gestern, 11:41
Bei deinem Beispiel das ^ einmal vergessen,
oder irgendwann aus dem Objekt einen Record gemacht,
und schon passieren komische Dinge (oder auch nicht).

Somit würden += und Co. also nicht nur kürzeren, sondern auch fehlerunanfälligeren Code ermöglichen.
Gerade für sowas sind Syntaxneuerungen was Schönes, wenn es damit dann auch gleich besser, einfacher und sicherer werden könnte.


Zitat:
sie nicht verwenden soll
Nicht sollen ist nicht ganz richtig. (aus schlechten Erfahrungen herhaus, wird davon gern abgeraten)

Zuerst weil der Debugger oft nicht damit klar kommt und man innerhalb des WITH dann nicht an Variablenwerte einsehen kann.

Sowie es zukünftig Probleme geben könnte, und es dann nicht mehr so funktioniert, wie man es sich mal dachte.
(was bereits mehrmals passiert war, weil z.B. Klassen/Records-Interfaces verändert/erweitert wurden)

Und wenn du einen längeren WITH-Block vor dir hast (hier hatte ich schon einen mit fast 100 Zeilen gesehen, 3 WITH verschachtelt und bei einem 2 Dinge drin)
du selbst nicht mehr erkennen kannst, was von wo kommt.
Ja, inline VAR ist eine geile Möglichkeit. (wir hätten uns früher aber auch über benamte WITH gefreut, also anstatt einer impliziten Temp-Variable, ihr selbst einen Namen geben zu können und den dann zu nutzen)

z.B. im FormCreate ein
Delphi-Quellcode:
//var R: TRect;
with R do begin
  Width := Right - Left;
  Height := Bottom - Top;
end;
Gedacht war also
Delphi-Quellcode:
with R do begin
  {Self.}Width := {R.}Right - {R.}Left;
  {Self.}Height := {R.}Bottom - R.}Top;
end;
bis jemand die eigentlich nette Idee hatte, daß TRect ein Width- und Height-Property bekommt,
es plötlich zu dem wurde
Delphi-Quellcode:
with R do begin
  {R.}Width := {R.}Right - {R.}Left;
  {R.}Height := {R.}Bottom - R.}Top;
end;
und man sich wunderte, warum die Form ihre Größe nicht mehr verändert, wenn mit neuen Delphi kompiliert.

Dafür geht es jetzt so, gleich viel besser:
Delphi-Quellcode:
{Self.}Width := R.Width;
{Self.}Height := R.Height;

// oder
{Self.}BoundsRect := R;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (Heute um 09:10 Uhr)
  Mit Zitat antworten Zitat