AGB  ·  Datenschutz  ·  Impressum  







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

Index für 2-dimensionale Arrayproperty

Ein Thema von Pangea · begonnen am 28. Jan 2012 · letzter Beitrag vom 30. Jan 2012
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.652 Beiträge
 
Delphi 12 Athens
 
#1

AW: Index für 2-dimensionale Arrayproperty

  Alt 29. Jan 2012, 14:36
Wäre es erlaubt so zu programmieren, täte man sich damit aber keinen Gefallen weil diese Deklaration total unübersichtlich wird.
Dem kann ich nicht zustimmen! Ich hatte schon öfter den Fall, wo ich eine Reihe Boolscher Properties auf die Bits eines ByteArrays mappen wollte. Da käme ein solches Konstrukt gerade recht. Als Lösung habe ich dann für jedes Byte einen eigenen Getter und Setter deklariert, in dem ich dann mit Index 0..7 die Bits abfragen konnte. Alternativ habe ich auch schon einfach eine BitIndex 0..n verwendet, was aber auch nicht ideal war, da die Bits in der Vorgabe mit 4.1, 6.5 usw. angegeben waren. War alles nicht gerade übersichtlicher.

Ein Sprachkonstrukt zu verbieten, nur weil man damit unübersichtlich programmieren kann, ist einfach kurzsichtig. Man kann schließlich mit jeder Programmmiersprache unübersichtlich programmieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Index für 2-dimensionale Arrayproperty

  Alt 29. Jan 2012, 20:22
Deine Bits und Bytes kannst Du doch wunderbar mit einem Index umsetzen:
Delphi-Quellcode:
Property Bit0OfFirstByte : boolean index 00 ...
Property Bit7OfFirstByte : boolean index 07 ...
Property Bit0OfSecondByte : boolean index 10 ...
Property Bit7OfSecondByte : boolean index 17 ...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.652 Beiträge
 
Delphi 12 Athens
 
#3

AW: Index für 2-dimensionale Arrayproperty

  Alt 29. Jan 2012, 21:22
Deine Bits und Bytes kannst Du doch wunderbar mit einem Index umsetzen:
Delphi-Quellcode:
Property Bit0OfFirstByte : boolean index 00 ...
Property Bit7OfFirstByte : boolean index 07 ...
Property Bit0OfSecondByte : boolean index 10 ...
Property Bit7OfSecondByte : boolean index 17 ...
Klar geht das so - es gibt für fast alles einen Workaround. Elegant geht anders.

IMHO gibt es keinen Grund an der Stelle nicht mehrere Indexeinträge zu erlauben. Wenn das jemand zu unübersichtlich ist, muss er es ja nicht verwenden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Index für 2-dimensionale Arrayproperty

  Alt 29. Jan 2012, 22:12
Ok, wenn man 2 Dimensionen zulassen würde, warum dann nicht auch 3 oder mehr Dimensionen?
Man sollte aber bedenken, dass man schon bei einer Dimension von z.B. 5 * 8 ganze 40 Properties hinschreiben muss.
Hier sollte gleich ein kleines Alarmglöckchen leuten: "Eine Klasse mit 40 Properties? Und alle vom gleichen Typ? Da stimmt doch was nicht, da muss es doch auch einen anderen Weg geben"

Das Schlüsselwort "Index" ist doch eher ein selten genutzes Feature mit relativ wenig Nutzen.

Borland hätte stattdessen folgende Property-Deklaration einführen sollen:
Delphi-Quellcode:
TDirection = (dX, dY);

TTestClass = class
private
  procedure SetSomething(value: integer; typ:Char; dir:TDirection): integer;
  function GetSomething(typ:Char; dir:TDirection): integer;
public
  property SpeedX: integer read GetSomething('S', dX);
  property SpeedY: integer read GetSomething('S', dY);
  property PositionX: integer read GetSomething('P', dX) write SetSomething('P', dX);
  property PositionY: integer read GetSomething('P', dY) write SetSomething('P', dY);
  property AccelerationX: integer read GetSomething('A', dX);
end;
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Index für 2-dimensionale Arrayproperty

  Alt 30. Jan 2012, 06:59
Man sollte aber bedenken, dass man schon bei einer Dimension von z.B. 5 * 8 ganze 40 Properties hinschreiben muss.
Wieso das denn? ich muss doch nicht für jeden möglich Index eine Property hinschreiben.
Zitat:
Das Schlüsselwort "Index" ist doch eher ein selten genutzes Feature mit relativ wenig Nutzen.
Es spart Platz und Tipparbeit.
Zitat:
Borland hätte stattdessen folgende Property-Deklaration einführen sollen:
Das ist dann kein Delphi/Pascal mehr. Das Wesen von Pascal ist die Trennung von Deklaration und Implementierung. Wenn Du soetwas magst, wechsle zu C# (z.B.)
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz