AGB  ·  Datenschutz  ·  Impressum  







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

Slicing for Delphi™

Ein Thema von Meflin · begonnen am 24. Mär 2009 · letzter Beitrag vom 22. Apr 2009
Antwort Antwort
Seite 2 von 3     12 3      
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Slicing for Delphi™

  Alt 24. Mär 2009, 22:54
MinInt? Das kennt mein Delphi gar nicht. Was ist denn das? 0? -1? $80000000?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Slicing for Delphi™

  Alt 25. Mär 2009, 12:15
const MinInt = Low(Integer) im Grunde muß da einfach nur irgendein Wert hin, welcher (vermutlich) nie als Parameter übergeben wird.
$2B or not $2B
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: Slicing for Delphi™

  Alt 25. Mär 2009, 20:51
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'?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#14

Re: Slicing for Delphi™

  Alt 26. Mär 2009, 19:49
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Slicing for Delphi™

  Alt 26. Mär 2009, 20:00
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Slicing for Delphi™

  Alt 26. Mär 2009, 20:14
Ich wäre für ein Interface als Rückgabewert.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#17

Re: Slicing for Delphi™

  Alt 26. Mär 2009, 20:26
Am besten noch ein Enumerator-Interface
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#18

Re: Slicing for Delphi™

  Alt 27. Mär 2009, 12:40
Zitat von Apollonius:
Ich wäre für ein Interface als Rückgabewert.
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
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Slicing for Delphi™

  Alt 27. Mär 2009, 17:38
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#20

Re: Slicing for Delphi™

  Alt 22. Apr 2009, 20:05
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 (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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 00:12 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