Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Slicing for Delphi™ (https://www.delphipraxis.net/131414-slicing-delphi%99.html)

Namenloser 24. Mär 2009 21:54

Re: Slicing for Delphi™
 
MinInt? Das kennt mein Delphi gar nicht. Was ist denn das? 0? -1? $80000000?

himitsu 25. Mär 2009 11:15

Re: Slicing for Delphi™
 
Delphi-Quellcode:
const MinInt = Low(Integer)
im Grunde muß da einfach nur irgendein Wert hin, welcher (vermutlich) nie als Parameter übergeben wird.

alzaimar 25. Mär 2009 19:51

Re: Slicing for Delphi™
 
Ich finde das Slicing ja ganz nett, aber imho wird versucht, Delphi eine anderes Paradigma aufzudrängen. Die beschriebene Funktionalität lässt sich doch sehr schön mit unterschiedlichen Methoden (und aussagekräftigen Namen) bewerkstelligen. Die Syntax ist kryptisch und widerspricht daher dem Konzept der Lesbarkeit.
Delphi-Quellcode:
Const
  FromStart = -MaxInt;
  ToEnd = MaxInt;

Type
  TSliceableList = Class
    Function Copy(From,To : Integer) : TSliceableList;
    Function Probe(StartIndex, Step : Integer) : TSliceableList;
...
End;
Das wäre dann eine sinnvolle Erweiterung für Listen. Mir fällt nur grad (bis auf Copy) kein sinnvoller Einsatz ein. Hast Du Beispiele, für die Verwendung von 'nur jedes 3.Element'?

Meflin 26. Mär 2009 18:49

Re: Slicing for Delphi™
 
Zitat:

Zitat von alzaimar
Die beschriebene Funktionalität lässt sich doch sehr schön mit unterschiedlichen Methoden (und aussagekräftigen Namen) bewerkstelligen.

NAtürlich, da habe ich auch schon dran gedacht. Nur ist Slicing ja nix anderes als ein erweiterter Index - und auf das i-te Listenelement willst du ja auch nicht mit List.GetElement(i) zugreifen ;)

Zitat:

Die Syntax ist kryptisch und widerspricht daher dem Konzept der Lesbarkeit.
Da muss ich dir ganz entschieden widersprechen. Wenn man von dem ::-Zeug absieht (was es glaube ich auch nur in Python gibt), finde ich das äußerst intuitiv!

Zitat:

Hast Du Beispiele, für die Verwendung von 'nur jedes 3.Element'?
Meinst du jetzt wann man das mal in der PRaxis brauchen könnte? Nein, spontan nicht wirklich :stupid:

Christian Seehase 26. Mär 2009 19:00

Re: Slicing for Delphi™
 
Moin Zusammen,

ich würde jedenfalls in keinem Falle TStrings als Rückgabewert verwenden, sondern als Parameter übergeben, da man dann immer vor dem Problem steht, wann diese Objekt wieder zerstört werden muss, und von wem.

Apollonius 26. Mär 2009 19:14

Re: Slicing for Delphi™
 
Ich wäre für ein Interface als Rückgabewert.

Dax 26. Mär 2009 19:26

Re: Slicing for Delphi™
 
Am besten noch ein Enumerator-Interface ;)

Meflin 27. Mär 2009 11:40

Re: Slicing for Delphi™
 
Zitat:

Zitat von Apollonius
Ich wäre für ein Interface als Rückgabewert.

Zitat:

Zitat von Dax
Am besten noch ein Enumerator-Interface ;)

Das müsst ihr mir jetzt mal kurzer genauer erklären, wie ihr euch das vorstellt :stupid:

Apollonius 27. Mär 2009 16:38

Re: Slicing for Delphi™
 
Praktisch ein TStrings, aber als Interface. Durch die Referenzzählung umgehst du die manuelle Freigabe. Ein Enumerator-Interface ist eines, dass eine Methode GetEnumerator hat, welche einen Enumerator zurückgibt (mehr dazu in der Delphi-Hilfe). Dadurch wird die Verwendung der For-In-Schleife ermöglicht.

Meflin 22. Apr 2009 19:05

Re: Slicing for Delphi™
 
Soderle,

ich habe das ganze nun noch etwas weiterentwickelt, und jetzt funktioniert das ganze schon so:
Delphi-Quellcode:
uses Slicing;
...
var
  lst1, lst2: TStringList;
...

lst1 := lst2[-3];
lst1 := lst2[1,5];
lst1 := lst2['1:5'] // Aus Nostalgiegründen drinne gelassen =)
was ich schonmal ziemlich brauchbar finde :firejump: (funktioniert allerdings jetzt nur noch ab D2005).



Allerdings hat es immernoch unschönerweise TStringList als Rückgabetyp. Ich versteh einfach nicht, wie das mit interface praktischerweise gehen soll. Wenn ich irgendein interface selbst definiere, dann muss ja der Anwender immer erst eine passende Klasse dazu implementieren, das wäre ja auch bescheuert.

Oder könnte ich via class helpern der TStringList bspweise ein interface "beibringen", sodass das dann verwendet werden könnte?

Nunja, ich versteh einfach nicht, wie ihr das meint, bzw. wo da der Vorteil sein soll...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 Uhr.
Seite 2 von 3     12 3      

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