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 3 von 9     123 45     Letzte »    
Elvis

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

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:56
Die Kenntnis hat doch der Compiler/Parser - das ist doch der Sinn eines solchen with-Entfernungstools. Oder versteh ich dich jetzt falsch?
Ich schreibe selbst statische Code-Analysen für dyn. Sprachen. Und "with" gehört lustigerweise fast in diese Kategorie, auch wenn Delphi (bis auf OleVariant) statisch typisiert ist.
Man müsste alle Bezeichner innerhalb des with-Statements auflösen. Also den nächstmöglichen Scope finden, aus dem sie kommen können.
Das ist aber fehleranfälliger als man es erwartet. Gerade in Delphi, wo man als Tool nie weiß, ob man jetzt die Saucen nehmen kann, oder die .DCU hernehmen muss.
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 jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.343 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 09:57
Die Kenntnis hat doch der Compiler/Parser - das ist doch der Sinn eines solchen with-Entfernungstools. Oder versteh ich dich jetzt falsch?
Der Parser kann diese Kenntnis nicht haben bzw. müsste einen riesigen Aufwand betreiben (genau eines der Probleme von with), das kann nur der Compiler. Und deshalb könnte ein solches Tool diese Daten auch nur aus dem Compiler bekommen, aber der hat dafür ja keine Schnittstelle.

So hätte man das With-Statement auch gestalten und die Unsicherheiten beim Scope vermeiden können
Stimmt, aber Variablen werden in Delphi nun einmal vor dem begin deklariert und nicht irgendwo. Ob man das gut findet oder nicht, sei jedem selbst überlassen, ich persönlich finde es gut (auch wenn ich diese Art der Deklaration durchaus nett fände).
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Elvis

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

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 Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 10:02
Es wird aber (leider) trotzdem nicht aus der Sprache rausfliegen, sondern wird nur in der RTL nicht mehr benutzt. Ob andere da mitziehen, ist eine andere Sache.
Die Diskussion im Netz (die ich ehrlich zugegeben bisher überhaupt nicht wahrgenommen habe) scheint aber das Gegenteil anzudeuten.

Mag sein dass with allgemein nicht sehr beliebt ist. Aber das ist genauso eine persönliche Sicht der Dinge. Wenn es with nie gegeben hätte würde es mir wahrscheinlich gar nicht fehlen. So aber habe ich sogar in anderen Sprachen nach einem with-Äquivalent gesucht und enttäuschenderweise keins gefunden (z.B. PHP). Jetzt dürft ihr frohlocken... Zum Glück! Egal, es soll keine philosophische Diskussion werden.
Zitat von jaenicke:
Das Debuggen geht deshalb heute mit XE3 auch sehr viel schneller, weil ich nicht ständig Ausdrücke in Strg + F7 auswerten muss, wenn ich in den Delphiquelltexten debugge, sondern einfach die Maus drüberhalten kann. Das hat mich die ganzen Jahre schon genervt...
Dafür vergeudet man die so gewonnene Zeit mit den anderen Unzulänglichkeiten der IDE. Ich denke da nur an die reine Startzeit der IDE und den sich immer wieder aufklappenden Strukturbaum ohne jegliche Such- oder Organisationsfunktionen.

Ok, um wieder auf das Thema zurück zu kommen: Angenommen, with ist tatsächlich so unschön wie ihr es beschreibt und ich hatte es bisher bloß nicht als Problem wahrgenommen. Ganz ehrlich: Der Compiler (egal ob das alte D7 oder das neuere XE2) geben Hinweise und Warnungen en masse aus für jeden erdenklichen Firlefanz. Variablen, die deklariert und nicht verwendet werden z.B. Aber wenn with tatsächlich solche Scope-Probleme impliziert, warum gabs dafür bisher keine Hinweise?

Ich meine, dann braucht sich wirklich niemand wundern, dass so eine Kreuzung aus Gewohnheitstier und Betonschädel wie ich sich dann aufregt ^^

@sx2008: Dein Vorschlag zur Erweiterung der with-Syntax finde ich exzellent! x und y könnten sogar untypisierte Ausdrücke sein, der Compiler wüßte durch das with-Statement auf was sie sich beziehen. Die Lösung wäre viel besser als das ersatzlose Streichen von with.
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 jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.343 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 10:12
Ich denke da nur an die reine Startzeit der IDE
So viel finde ich die 10 Sekunden nicht. Wie oft starte ich denn Delphi pro Tag? Das ist bei mir in der Regel eine niedrige einstellige Zahl.

und den sich immer wieder aufklappenden Strukturbaum ohne jegliche Such- oder Organisationsfunktionen.
Dafür gibt es ja die DDevExtensions.

Aber wenn with tatsächlich solche Scope-Probleme impliziert, warum gabs dafür bisher keine Hinweise?
Weil der Compiler die Probleme kaum erkennen geschweige denn genau identifizieren kann. Zudem würde es da bei den meisten Projekten mit with-Verwendung schlicht viel zu viele Meldungen geben und außerdem war with bis vor kurzem ja auch in den RTL-Quelltexten weit verbreitet.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (22. Apr 2013 um 10:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#26

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 10:37
Ich denke da nur an die reine Startzeit der IDE und den sich immer wieder aufklappenden Strukturbaum ohne jegliche Such- oder Organisationsfunktionen.
Ist zwar jetzt OT, aber mein XE3 startet um einiges schneller als D7.

Der Compiler (egal ob das alte D7 oder das neuere XE2) geben Hinweise und Warnungen en masse aus für jeden erdenklichen Firlefanz. Variablen, die deklariert und nicht verwendet werden z.B. Aber wenn with tatsächlich solche Scope-Probleme impliziert, warum gabs dafür bisher keine Hinweise?
Für den Compiler ist es ja nichts besonderes, innerhalb eines anderen Scopes zu arbeiten. Du bekommst ja auch keine Warnung vom Compiler, wenn eine lokale Variable eine gleichnamige globale verdeckt.

Andererseits hat ein Tool wie der Pascal Analyzer extra einen Report für mehrdeutige Referenzen in with-Anweisungen (obwohl sie für den Compiler ja gar nicht mehrdeutig sind).
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#27

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

Registriert seit: 10. Jun 2003
Ort: Berlin
9.343 Beiträge
 
Delphi 11 Alexandria
 
#28

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
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#29

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 Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#30

AW: Das with-Statement in XE4

  Alt 22. Apr 2013, 11:34
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?
Eigentlich handelt es sich auch nicht um Variablen, sondern um benannte Scopes, die bei Delphi einfach (unbenannt) so daruntergejubelt und auch nirgends deklariert werden
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 9     123 45     Letzte »    


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 22:25 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