AGB  ·  Datenschutz  ·  Impressum  







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

Proleme bei Locate

Ein Thema von Flash68 · begonnen am 10. Sep 2012 · letzter Beitrag vom 11. Sep 2012
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von himitsu
himitsu

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

AW: Proleme bei Locate

  Alt 10. Sep 2012, 23:42
Ich bezog meine Aussage ausschließlich auf diesen Code und da ist es nutzlos und verbessert das Codeverständnis auch nicht wirklich.

(with ... do anstatt einem . )

Und wie du schon sagtest, ist es eher hinderlich.

- keine Vorteile
- unnötiger Code, welcher den Lesefluß eher behindert
- beim Debuggen oftmals hinderlich
= Vorteile 0 und Nachteile (mindestens) 3
$2B or not $2B

Geändert von himitsu (10. Sep 2012 um 23:45 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Proleme bei Locate

  Alt 11. Sep 2012, 06:36
Das Problem mit with ist, dass es zu sehr komplexen schlecht identifizierbaren Fehlern führen kann, wenn die Eigenschaft/Methode des falschen Objektes aufgerufen wird. Das kann passieren wenn bei einem Update der VCL Klassen neue Eigenschaften/Methoden bekommen. Dies ist bei XE2 passiert und hat bei Einigen zu massiven Problemen geführt.
Markus Kinzler
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#13

AW: Proleme bei Locate

  Alt 11. Sep 2012, 08:22
Ja das wissen wir ja alles.

..Dies ist bei XE2 passiert und hat bei Einigen zu massiven Problemen geführt.
Das ist *NICHTS* im Vergleich zum Wechsel des Datentyps 'String' von Ansi auf Wide. Und ist 'String' deshalb nutzlos, böse und falsch?

Wenn es jemand verwenden will, so wie ich z.B. seit 30 Jahren, und damit keine Probleme hat, erfolgreiche Projekte durchgezogen hat und die Haare immer noch gleichmäßig wachsen und es auch sonst mit der Verdauung, dem Privatleben, den Freunden, dem Beruf und überhaupt klappt, wieso ist das dann so schlecht?

Es erleichtert das Lesen des Codes, wenn man es sinnvoll einsetzt(!).

Ich kann mir nämlich Endloszeilen sparen.
[DELPIH]
MyLongObjectName.TheComplicatedProperty.AndThisIsC omplex.Value := MyLongObjectName.TheComplicatedProperty.AndThisIsC omplex.Strings.IndexOf(MyLongObjectName.TheComplic atedProperty.AndThisIsComplex.Text);
[/DELPHI]
Hat was. Künstlerisches. Irgendwie.
[DELPIH]
With MyLongObjectName.TheComplicatedProperty.AndThisIsC omplex Do
Value := Strings.IndexOf(Text);
[/DELPHI]
Finde ich viel einfacher zu verstehen und funktioniert, da Tippfehler fast ausgeschlossen sind. Beim Lesen spare ich Zeit. Ich muss natürlich wissen, das 'Strings' und 'Text' zu 'AndThisIsComplex' gehören, aber ich lese Code ja nicht, um zu lernen, sondern um ihn zu verstehen.

Klar, ein WITH über drei Seiten ist etwas dümmlich, aber das sind Methodenrümpfe auch (die zu lang sind).

Es gibt immer Möglichkeiten, etwas Sinnvolles so anzuwenden, das es krank wird. Das ist mit 'WITH' so, aber auch mit GOTO, EXIT, BREAK, CONTINUE, WHILE, REPEAT usw. Also mit so ziemlich jedem Sprachkonstrukt.

Ich schlage mich allerdings nicht darum, es benutzen zu dürfen, denn es geht auch ohne (z.B. mit einer Aliasvariablen)

Delphi-Quellcode:
a := MyLongObjectName.TheComplicatedProperty.AndThisIsComplex;
a.Value := a.Strings.IndexOf(a.Text);
Ach, und das mir keiner kommt und sagt:"Büschen viel Wind um Nichts".
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Proleme bei Locate

  Alt 11. Sep 2012, 08:29
Zitat:
Das ist *NICHTS* im Vergleich zum Wechsel des Datentyps 'String' von Ansi auf Wide. Und ist 'String' deshalb nutzlos, böse und falsch?
Damit hatte man aber nur Probleme, wenn man sich auf inoffizielle Implementierungsdetails verlassen hat. Beim "sauberen" Umgang mit Strings gab es keine Probleme.
Bei with besteht nun mal die Gefahr, das es zu Scope-Verschiebungen kommt und deshalb würde ich darauf verzichten.
Auf "offizieller" Seite sieht man das ja auch ähnlich.

http://stackoverflow.com/questions/5...a-bad-practice
Markus Kinzler

Geändert von mkinzler (11. Sep 2012 um 08:32 Uhr)
  Mit Zitat antworten Zitat
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#15

AW: Proleme bei Locate

  Alt 11. Sep 2012, 09:04
Kann man dann auch sowas umarbeiten ohne with?

Delphi-Quellcode:
procedure TFRM_Main.DBG_BuecherTitleClick(Column: TColumn);
begin
  with DM_Buecher.ADS_Buecher do
    if sort = Column.Field.FieldName then
      sort := Column.Field.FieldName + ' DESC'
    else
      sort := Column.Field.FieldName
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Proleme bei Locate

  Alt 11. Sep 2012, 09:09
Delphi-Quellcode:
procedure TFRM_Main.DBG_BuecherTitleClick(Column: TColumn);
begin
    if sort = DM_Buecher.ADS_Buecher.Column.Field.FieldName then
      sort := DM_Buecher.ADS_BuecherColumn.Field.FieldName + ' DESC'
    else
      sort := DM_Buecher.ADS_BuecherColumn.Field.FieldName
end;
oder
Delphi-Quellcode:
procedure TFRM_Main.DBG_BuecherTitleClick(Column: TColumn);
var
  fieldname: string;
begin
    fieldname := DM_Buecher.ADS_Buecher.Column.Field.FieldName:
    if sort = fieldname then
      sort := fieldname + ' DESC'
    else
      sort := fieldname;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#17

AW: Proleme bei Locate

  Alt 11. Sep 2012, 09:36
die funktionieren beide nicht so recht:

bei der ersten Variante kennt er das sort nicht und kann nichts mit

DM_Buecher.ADS_Buecher.Column.Field.FieldName anfangen

bei der zweiten kann er nichts mit

Column.Field.FieldName: anfangen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Proleme bei Locate

  Alt 11. Sep 2012, 09:38
Zu welcher Klasse gehören die beiden Eigenschaften?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Proleme bei Locate

  Alt 11. Sep 2012, 09:47
Delphi-Quellcode:
  with DM_Buecher.ADS_Buecher do
    if sort = Column.Field.FieldName then
      sort := Column.Field.FieldName + ' DESC'
    else
      sort := Column.Field.FieldName
Wenn alles* unterhalb des WITH zu der Klasse gehört, welche direkt im WITH gekapselt wurde, dann gibt es meistens keinerlei Probleme,
aber wie man bei Umstellungen auf XE2, oder sonstigen Umstellungen oder Erweiterungen von Klassenstrukturen, gesehn hat, gibt es sofort Probleme, wenn sich z.B. Methoden/Property im Scope verschieben, bzw. wenn sich plötzlich Gleichnamiges dazwischenschiebt (im Scope auftaucht).

*) Property, Methoden/Funktionen, Felder und (eingebettete) Typen und Konstanten


WITH kann ein mächtiges Werkzeug sein, womit man sich Arbeit erspart,
aber man sollte es nicht inflationär und mit vorallem mit Bedacht einsetzen.

Und in dem hier vorliegendem Fall war es nunmal vollkommen nutzlos und brachte keinerlei Vorteile.
Zitat:
with ... do anstatt einem .
$2B or not $2B

Geändert von himitsu (11. Sep 2012 um 09:54 Uhr)
  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
 
#20

AW: Proleme bei Locate

  Alt 11. Sep 2012, 09:55
Zu welcher Klasse gehören die beiden Eigenschaften?
Das sieht man doch

Column ist ein Parameter der Methode und Sort ist eine Property von DM_Buecher.ADS_Buecher
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 2 von 4     12 34      


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 21:15 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