AGB  ·  Datenschutz  ·  Impressum  







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

Dynamisches Array als Klasse

Ein Thema von delphifan2004 · begonnen am 22. Jan 2014 · letzter Beitrag vom 23. Jan 2014
Antwort Antwort
delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
279 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Dynamisches Array als Klasse

  Alt 23. Jan 2014, 09:28
@himitsu: Wäre es nicht, denn ich der alten Version mußte ich Anpassungen vornehmen, um mehrdimensionale Arrays unterstützen zu können, danach funktionierten zwar die 2- und 3 dimensionalen Arrays, die eindimensionalen aber aus mir unerklärlichen Gründen nicht mehr. Außerdem glaube ich nicht, das per Suchen und Ersetzen einfach die Array Zugriffe geändert werden müssen und gut is, dann ließe sich das tatsächlich updaten. Aber dann mmuss ja auf jeden Fall auch die SetLength Methode in allen Klassen angepasst werden.

@Bjoerk: Das konnte man. Ja. Ok, so ließe sich das TGenericDynArray sicher noch vereinfachen.

@Delphi Laie: Ja das sollte klappen. Meine Intention aber war auch, mit der direkten Zuweisung von Integer Werten arbeiten zu können. Du aber hast Bjoerk's Vorschlag aufgegriffen und nun nur noch die Zuweisung an den Pointer drin. Habe es noch nicht getestet, aber es kann sein, das @Bjoerk Recht hat. Dann könnte ein Longint auch da zugewiesen werden, mit:

Delphi-Quellcode:
var
  myArray: TGenericDynArray;
  I: Longint;

begin
  myArray := TGenericDynArray.CreateArray(5{,ElType würde nicht mehr gebraucht});
  I := 100;
  myArray.ItemsP[2] := Pointer(I);
end.
Habe ich jetzt noch nicht getestet, aber wenn das geht, dann hat Bjoerk Recht.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

AW: Dynamisches Array als Klasse

  Alt 23. Jan 2014, 11:13
Die Aufspaltung in mehrere Integertypen halte ich insofern für entbehlich, als daß die Größenbeschränkung der Integervariablen, wie überhaupt alle Beschränkungen des Computers i.d.R. eher restriktiv und hinderlich sind. Der Pointer agiert wie der größte Integertyp (Integer, der bis 2^31-1 ohne Vorzeichenumschaltung funktioniert) und umfaßt damit gewissermaßen alle Integertypen.

Solang man bei Arrayelementen mit gleichem bzw. konstantem Speicherbedarf bleibt, funktioniert die Unit bestens. Auch ein Record of Integer (benötige ich in meinem Sortierkino) und der Datentyp string[255] funktionieren einwandfrei. Nicht hinbekommen habe ich bisher die Implementierung der dynamischen Datenstruktur "string", aber daran werde ich mich nicht festbeißen.

Erstellt man typabhängig eigene Klassen (dabei kann man sich die Klassenableitung zunutze machen) und man definiert nur die eine typabhängige "property" als "default", entfällt die Adressierung ".Items" der einzelnen Arrayelemente, außerdem entfällt der ^-Operator. Diese Datenstruktur, auch wenn sie auf TList basiert, ist tatsächlich wie ein (dynamisches!) Array benutzbar.

Was Delphi 3 recht ist, ist Delphi 2 billig. Im Anhang ist mein Delphi-2-Projekt, das die Verwendung der verschiedenen Datentypen demonstrieren soll.

Es wundert mich, daß bisher noch keine Mosereinwände á la "Was soll das, Delphi kann das ab Version 4.0 von Hause aus" kamen (Edit: Doch, himitsu äußerte sich). Mich interessierte das, und delphi2004 beschäftigte sich auf meine vorsichtige Anfrage noch einmal damit. Nunmehr funktioniert es für eindimensionale Arrays (mit der genannten Einschränkung) perfekt, und dafür danke ich ihm auch an dieser Stelle noch einmal herzlich! Nicht zuletzt lernt man ja auch bei solchen Experimentalprojekten hinzu.
Angehängte Dateien
Dateityp: zip DynArrays.zip (96,4 KB, 9x aufgerufen)

Geändert von Delphi-Laie (23. Jan 2014 um 20:00 Uhr)
  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 05:00 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