Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi With Class1, Class2 do (https://www.delphipraxis.net/84091-class1-class2-do.html)

smudo 11. Jan 2007 09:08


With Class1, Class2 do
 
Ich hab mal eine Frage...

Ich verwende folgendes (stark reduziert):
Delphi-Quellcode:
With Class1, Class2 do
  DoSomething;
Wenn beide Klassen eine Methode DoSomething haben wird nur die Methode von Class2 ausgeführt.
Kann man Delphi dazu bringen, beide nacheinander auszuführen? Ich meine genau in diesem Konstrukt?

René

Elvis 11. Jan 2007 09:23

Re: With Class1, Class2 do
 
Ich nehme an, er führt die Implementierung von der zuletzt aufgeführten Instanz an.
Sowas überhaupt zu nutzen grenzt schon fast an vorsätzliches Bug-einschleusen. ;)

edit: au mann, jetzt fang ich selbst schon an Klasse und Instanz zu vertauschen :wall:

Robert Marquardt 11. Jan 2007 09:44

Re: With Class1, Class2 do
 
In der Delphi-Hilfe nachschlagen.
Delphi-Quellcode:
with Class1, Class2 do
ist aequivalent zu
Delphi-Quellcode:
with Class1 do
  with Class2 do
Die Bindung ist natuerlich immer zur innersten Klammer.

Bernhard Geyer 11. Jan 2007 09:59

Re: With Class1, Class2 do
 
Zitat:

Zitat von Elvis
Ich nehme an, er führt die Implementierung von der zuletzt aufgeführten Klasse an.
Sowas überhaupt zu nutzen grenzt schon fast an vorsätzliches Bug-einschleusen. ;)

Kann ich nur zustimmen. Überall wo in unserem Code noch with...-Reste sind werden diese bei anstehender Überarbeitung/Erweiterung der Unit entfernt. Spart einige sterbende Gehirnzellen.

Union 11. Jan 2007 10:22

Re: With Class1, Class2 do
 
Ich setze das gerne ein, aber nur einstufig und Lokal begrenzt. Oder will man z.B. so was etwa 10 mal schreiben:
Delphi-Quellcode:
cxGridLsKopfDBTableViewLsKopf.TcxGridDataRow(ViewData.Records[i]).Values[...]

r2c2 11. Jan 2007 10:35

Re: With Class1, Class2 do
 
Zitat:

Zitat von Union
Ich setze das gerne ein, aber nur einstufig und Lokal begrenzt. Oder will man z.B. so was etwa 10 mal schreiben:
Delphi-Quellcode:
cxGridLsKopfDBTableViewLsKopf.TcxGridDataRow(ViewData.Records[i]).Values[...]

Nö, will man nicht. Man muss aber auch hier kein with nehmen. Ein einfacher typisierter Pointer tuts auch...

mfg

Christian

smudo 11. Jan 2007 12:20

Re: With Class1, Class2 do
 
Wow, einfache typisierte Pointer. :roll: Das klingt mir wenig verlockend.
Ich werde natürlich weiterhin wie gewohnt With verwenden, da ich daran interessiert bin, möglichst wenig Code eintippen zu müssen (das Beispiel von Union zeigt den Grund).

Ich sehe meine Frage als mit Nein beantwortet. Muss ich halt eine Proc draus machen, in der ich nur noch eine übergebene Klasse verwende. Natürlich mit "With Class do" :zwinker:

r2c2 11. Jan 2007 12:27

Re: With Class1, Class2 do
 
Zitat:

Zitat von smudo
Wow, einfache typisierte Pointer. :roll: Das klingt mir wenig verlockend.

Warum? Je nachdem, was du machst, kann das IMHO deutlich übersichtlicher sein, als ein with ohne Alias...

Delphi-Quellcode:
var
  value: <TypVonValues>;
begin
  ...
  value := cxGridLsKopfDBTableViewLsKopf.TcxGridDataRow(ViewData.Records[i]).Values[...];
  value.Methode;
  value.Property := test;
  ...
Du musst ein with weniger, ein do weniger und einen begin..end-Block weniger schreiben. Dafür nur ein Zeilchen mehr und hast dafür auch noch n sprechenden Alias...

mfg

Christian

Elvis 11. Jan 2007 12:32

Re: With Class1, Class2 do
 
Zitat:

Zitat von r2c2
Du musst ein with weniger, ein do weniger und einen begin..end-Block weniger schreiben. Dafür nur ein Zeilchen mehr und hast dafür auch noch n sprechenden Alias...

Und du weißt auch immer was auf wem aufgerufen wird.
Nicht zu vergessen, das Debugging mit with-Gedöns eher einem Selbstmartyrium gleicht als professionellem Entwickeln.

smudo 11. Jan 2007 12:41

Re: With Class1, Class2 do
 
Ich gebe zu, dass r2c2 die elegantere Form verwendet, die noch dazu besser zu debuggen ist. Ich hab das nur nicht mit dem Begriff einfacher typisierter Pointer in Verbindung gebracht.
Ich werd mal meine With-Verwendung überdenken.

Vielen Dank.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr.
Seite 1 von 2  1 2      

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