Re: Slicing for Delphi™
MinInt? Das kennt mein Delphi gar nicht. Was ist denn das? 0? -1? $80000000?
|
Re: Slicing for Delphi™
Delphi-Quellcode:
im Grunde muß da einfach nur irgendein Wert hin, welcher (vermutlich) nie als Parameter übergeben wird.
const MinInt = Low(Integer)
|
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:
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'?
Const
FromStart = -MaxInt; ToEnd = MaxInt; Type TSliceableList = Class Function Copy(From,To : Integer) : TSliceableList; Function Probe(StartIndex, Step : Integer) : TSliceableList; ... End; |
Re: Slicing for Delphi™
Zitat:
Zitat:
Zitat:
|
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. |
Re: Slicing for Delphi™
Ich wäre für ein Interface als Rückgabewert.
|
Re: Slicing for Delphi™
Am besten noch ein Enumerator-Interface ;)
|
Re: Slicing for Delphi™
Zitat:
Zitat:
|
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.
|
Re: Slicing for Delphi™
Soderle,
ich habe das ganze nun noch etwas weiterentwickelt, und jetzt funktioniert das ganze schon so:
Delphi-Quellcode:
was ich schonmal ziemlich brauchbar finde :firejump: (funktioniert allerdings jetzt nur noch ab D2005).
uses Slicing;
... var lst1, lst2: TStringList; ... lst1 := lst2[-3]; lst1 := lst2[1,5]; lst1 := lst2['1:5'] // Aus Nostalgiegründen drinne gelassen =) 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. |
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