AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Statisch Array in der abgeleiteten Klasse verändern?

Statisch Array in der abgeleiteten Klasse verändern?

Ein Thema von cocsy · begonnen am 10. Okt 2018 · letzter Beitrag vom 12. Okt 2018
Antwort Antwort
Seite 1 von 2  1 2   
cocsy

Registriert seit: 12. Jul 2011
18 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Statisch Array in der abgeleiteten Klasse verändern?

  Alt 10. Okt 2018, 19:24
Ich habe folgendes Problem!

Delphi-Quellcode:
TClassA = class(TObject)
public
  const
    aSIZE = 2048;
  type
    TLineA = array [0 .. aSIZE] of Single; // und ca 20 weitere spezielle Typen die abhängig von aSize sind
    ....
public
  function....
  function....
  function....
  function....
end;
die Funktionen sind alle abhängig von aSize und TLineA und...

Benötigt wird TClassB, genauso wie TClassA mit aSize=1024, wobei ich nicht alle Funktionen von TClassA ein zweites mal implementieren will.

da ich eigentlich die Typen nicht dynamisch machen will (aus Sicht der Optimierung) stehe ich hier auf dem schlauch wie ich am besten vorgehen soll.
Jan

Geändert von cocsy (11. Okt 2018 um 07:44 Uhr)
  Mit Zitat antworten Zitat
cocsy

Registriert seit: 12. Jul 2011
18 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Statisch Array in der abgeleiteten Klasse verändern?

  Alt 10. Okt 2018, 19:26
folgendes geht nicht

Delphi-Quellcode:
TClassA = class(TObject)
public
  const
    aSIZE : Integer = 2048;
    ....
end;
Jan
  Mit Zitat antworten Zitat
cocsy

Registriert seit: 12. Jul 2011
18 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Statisch Array in der abgeleiteten Klasse verändern?

  Alt 10. Okt 2018, 19:29
folgendes geht auch nicht.

Delphi-Quellcode:
  TSizeOfInt = class(TObject)
  public
    const
    aSize : Integer = 2048;
// und auch nicht über eine -->> class function aSize : Integer; virtual; abstract;
  end;

TClassA<SizeOfInt : record> = class(TObject)
public
  type
    TLineA = array [0 .. SizeOfInt.aSIZE] of Single; // und ca 20 weitere spezielle Typen die abhängig von aSize sind
    ....
end;
Jan
  Mit Zitat antworten Zitat
Redeemer
Online

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
399 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Statisch Array in der abgeleiteten Klasse verändern?

  Alt 10. Okt 2018, 20:03
und auch folgendes geht nicht.
Angehängte Grafiken
 
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.077 Beiträge
 
Delphi 7 Personal
 
#5

AW: Statisch Array in der abgeleiteten Klasse verändern?

  Alt 10. Okt 2018, 20:42
Nun, wenn der TE seinen Schwerpunkt in der ausufernden Aneinanderreihung von Wörtern gesetzt hätte, dann würde er nicht programmieren sondern z.B. in einer Zeitung arbeiten.
Ich nehme an es geht ihm um solche Konstrukte

Delphi-Quellcode:
const
  max=1024;

type
  t1 : Array [0..max] of Byte;
  t2 : Array [0..max] of Char;
  t3 : Array [0..max] of irgendeintyp;
wobei max verschiede Werte annehmen kann/soll.
Und diese Änderung soll wohl während der Laufzeit erfolgen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
cocsy

Registriert seit: 12. Jul 2011
18 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Statisch Array in der abgeleiteten Klasse verändern?

  Alt 11. Okt 2018, 07:35
...
Delphi-Quellcode:
const
  max=1024;

type
  t1 : Array [0..max] of Byte;
  t2 : Array [0..max] of Char;
  t3 : Array [0..max] of irgendeintyp;
wobei max verschiede Werte annehmen kann/soll.
Und diese Änderung soll wohl während der Laufzeit erfolgen.

Gruß
K-H
Eigentlich schon steht schon zur Compilezeit fest wie groß "max" ist. Ich denke das es mit Generika auch gehen müsste, zumindest in C++ geht es.
Jan

Geändert von cocsy (11. Okt 2018 um 07:46 Uhr)
  Mit Zitat antworten Zitat
ZOD

Registriert seit: 6. Mai 2009
78 Beiträge
 
#7

AW: Statisch Array in der abgeleiteten Klasse verändern?

  Alt 11. Okt 2018, 07:38
Zitat:
Eigentlich schon steht schon zur Compilezeit fest wie groß "max" ist.
nur als Idee:
bedingte Compilierung?
  Mit Zitat antworten Zitat
cocsy

Registriert seit: 12. Jul 2011
18 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Statisch Array in der abgeleiteten Klasse verändern?

  Alt 11. Okt 2018, 08:25
TClassA und TClassB werden parallel benötigt, deswegen würde eine beidingte Compelierung nicht funktionieren.
Jan
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.590 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: Statisch Array in der abgeleiteten Klasse verändern?

  Alt 11. Okt 2018, 12:25
Ich denke das es mit Generika auch gehen müsste, zumindest in C++ geht es.
Jap, mit den C++ Templates funktioniert sowas wunderschön, weil Diese den Code der resultierenden Klasse intelligent für die Typen erzeugen, die mindestens einmal als Template-Argument verwendet wurden. So wird beim Deklarieren von MyClass<std::string> und MyClass<std::uint32_t> einmal das Gerüst für std::string und einmal das Gerüst für std::uint32_t erzeugt. Oder wie deinem Falle würde auch MyClass<4> bzw. MyClass<8> zwei verschiedene Klassen erzeugen. Das sorgt natürlich für etwas größere Kompilate, eliminiert dafür aber sämtlichen runtime-overhead.

1. Problem:
Delphi erlaubt keine const-Expressions als Argument für Generics.

2. Problem:
Die Delphi Generics sind "dumm", unvollständig und in keiner Weise vergleichbar mit den funktionalen C++ Templates.

Delphi generiert für eine generische Klasse den Code nur einmalig. In Kombination damit, dass man keine gescheiten Constraints angeben kann, sorgt das für teils irrsinnige Konstrukte mit 1000 Pointer-Casts und Typechecks, damit der Compiler nicht wegen inkompatibler Typen meckert. Die Typechecks sind zwar teilweise mitlerweile Intrinsics und unbenutzte Fälle werden tatsächlich auch nicht mehr ins Kompilat aufgenommen, aber dennoch hat man nach wie vor runtime-overhead und zudem ist die Programmierung einer echten generischen Methode in der Regel eine Sisyphus-Aufgabe.

Deshalb: Vergiss es mit den Generics
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
cocsy

Registriert seit: 12. Jul 2011
18 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Statisch Array in der abgeleiteten Klasse verändern?

  Alt 11. Okt 2018, 20:04
schade, aber trotzdem Danke.
Jan
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf