AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Das with-Statement in XE4

Ein Thema von Codehunter · begonnen am 22. Apr 2013 · letzter Beitrag vom 8. Sep 2013
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.361 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 08:23
Und einen Ausdruck anzeigen im Debugger wird dann auch zur Freude...

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 08:49
Ohne with ist voll daneben...

Besonders beim Zugriff auf XML Dateien über ein Interface...

Aktuelles Beispiel
GrundDaten.Verfahrensdaten.Beteiligung.Beteiligter.Organisation.Registereintragung.Items[0].Inlaendisches_Registergericht.Registergericht_Ort.Content := 'Bonn'

Ohne With kann man das nicht mehr lesen oder mit arbeiten...
Und jedesmal ne Variable vom entsprechenden Untertypen definieren?

Schlechte wahl...

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
10.067 Beiträge
 
Delphi 12 Athens
 
#3

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 08:52
Zudem gibt es immer wieder Probleme, weil Code nicht mehr kompilierbar ist. Ein Beispiel ist die Einführung von zusätzlichen Features in TRect. Dort gibt es ja nun Offset, was aber leider in der VirtualStringTree genau innerhalb eines with benutzt wurde. Und schon war nur deswegen der Code nicht mehr kompilierbar.

Andere Punkte wurden ja schon genannt, wie der dass ein einfaches Debuggen so gut wie unmöglich wird, da man für jede einzelne Auswertung einer Variablen diese komplett in den Auswerten-Dialog schreiben bzw. kopieren muss (zusammen mit dem Anteil in with).

Das Zwei-Augen Prinzip beim Einchecken wird auch zur Farce, weil dabei niemand den Überblick wahren kann, wenn überall with steht. Da bleibt daher immer ein Unsicherheitsfaktor.
Welche Eigenschaften wo existieren, kann niemand immer auswendig wissen, zumal sich dies auch durch neue Features in der RTL ändert.

Davon abgesehen macht with in meinen Augen auch keinen Sinn. Der einzige "Vorteil" ist, dass man vielleicht etwas weniger tippen muss. Aber als Entwickler darf man ja nun wirklich nicht tippfaul sein, viel tippen gehört schließlich dazu...
Der riesige Zeit- und damit Kostenaufwand, der dann aber folgt, weil der Code schlechter zu warten ist, ist damit jedenfalls gar nicht vergleichbar. Ein Musterbeispiel für eine Milchmädchenrechnung.

Mittlerweile bauen wir es überall aus wenn wir eh was an der entsprechenden stelle ändern müssen.
Wir auch...

Ich selbst habe es auch nie wirklich viel benutzt. Gut, am Anfang als ich noch nicht beruflich entwickelt habe, da habe ich über die Folgen nicht so sehr nachgedacht und es kam schon mal in meinen Quelltexten vor, aber nur selten.

Und jedesmal ne Variable vom entsprechenden Untertypen definieren?
Das ist allemal besser als with.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:54
So hätte man das With-Statement auch gestalten und die Unsicherheiten beim Scope vermeiden können:
Delphi-Quellcode:
with FormComponent.Property1.SubProperty2.SubProperty3 as x do
begin
  x.BoolValue:= xyz;
  x.IntValue:= 123;
  x.StringValue:= 'xyz';
end;
Und als verschärfte Variante:
Delphi-Quellcode:
with FormComponent.Property1.SubProperty2.SubProperty3 as x, Gameboard.Player[1] as y do
begin
  x.BoolValue:= y.Active;
  x.IntValue:= y.Score;
  x.StringValue:= y.Name;
end;
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:58
So hätte man das With-Statement auch gestalten und die Unsicherheiten beim Scope vermeiden können:
In Oxygene sieht es so aus:
Delphi-Quellcode:
with x := SomeExpression() do
   x.DoSomething();
Man hat also nicht nur eine Variable, sondern diese existiert auch nur innerhalb des Blockes.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#6

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 10:58
In Oxygene sieht es so aus:
Delphi-Quellcode:
with x := SomeExpression() do
   x.DoSomething();
Man hat also nicht nur eine Variable, sondern diese existiert auch nur innerhalb des Blockes.

Hä? Wo ist denn da der Vorteil? Kann ich doch direkt so schreiben:

Delphi-Quellcode:
x := SomeExpression();
x.DoSomething();

Übrigens: Bei mir fliegt "With" auch überall raus, wo ich es finde. Aber Emba sollte es nicht einfach so aus dem Compiler entfernen. Ein deprecated oder ein anderer Compilerhinweis würde erst mal genügen.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
10.067 Beiträge
 
Delphi 12 Athens
 
#7

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 10:59
Der Vorteil ist, dass mit der Zeile die Variable nicht nur zugewiesen, sondern auch deklariert wird.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.312 Beiträge
 
Delphi 12 Athens
 
#8

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 11:02
Ach so. Muss man in Oxygen nicht extra deklarieren? So so! Würde aber der Pascal-Syntax wiedersprechen, da alle Variablen eigendlich deklariert werden müssen. Oder?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.291 Beiträge
 
Delphi 12 Athens
 
#9

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 08:58
Mal ganz davon abgesehen, dass mir das so ziemlich auf den Zünder geht (persönliche Meinung) dürfte das dazu führen dass viele Drittanbieter-Komponenten ziemlich lange brauchen werden bis sie für XE5 (oder wo auch immer with dann rausfliegt) verfügbar sind.

Am Rande bemerkt, ich habe in 16 Jahren Delphi-Coderei keinen Scope-Konflikt erlebt der mich Tage der Sucherei gekostet hätte. Vielleicht liegts ja auch an meinem Programmierstil oder wie ich die IDE bediene, was weiß ich.

Jedenfalls käme ich aus heutiger Sicht kaum ohne with-Statement aus. Andererseits, wenn ich meinen 7-Jahre-Migrationszyklus in Betracht ziehe und das "with-CutOff" in 3 Jahren kommt, träfe es mich erst in 10 Jahren. Vielleicht habe ich bis dahin meine betreffenden Synapsen neu vernetzt ^^

Oder ich geh in Rente...
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:08
Am Rande bemerkt, ich habe in 16 Jahren Delphi-Coderei keinen Scope-Konflikt erlebt der mich Tage der Sucherei gekostet hätte.
Ich habe ja nicht gesagt das es ein einzelnes With-Statment war.
Bei mittlerweile über 1,5 Mio. Quellcodezeilen und einigen Bibliotheken die man selbst portieren musste (u. a. weil die Entwicklung eingestellt wurde ist man schon auf einge with-Fallen gestoßen die Teilweise sich gut in der SW-Versteckt hatten und man an ganz anderer Stelle zuerst gesucht hatte.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz