Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Designfrage: initializing constant arrays (https://www.delphipraxis.net/143235-designfrage-initializing-constant-arrays.html)

semo 12. Nov 2009 10:23


Designfrage: initializing constant arrays
 
Ich habe mal eine Designfrage:
ich habe ein const static Array:
Delphi-Quellcode:
type
  TMyColumn = record
    ColumnName: string;
    FieldType: TFieldType;
  end;

const
  My_Columns: array[0..2] of TMyColumn = (
    (ColumnName: 'bla0'; FieldType: ftInteger),
    (ColumnName: 'bla1'; FieldType: ftInteger),
    (ColumnName: 'bla2'; FieldType: ftInteger)
  );
Nun möchte ich die Inhalte dieses Arrays in ein weiteres Array aufnehmen.
Ich habe da an so was in der Art gedacht:

Delphi-Quellcode:
const
  My_ColumnsEx: array[0..3] of TMyColumn = MyColumns + (
    (ColumnName: 'bla3'; FieldType: ftInteger)
  );
Ich mag nicht den Quellcode für alle vordefinierten Columns kopieren müssen nur weil ich eine Spalte mehr in dem zweiten Array habe.
Also nicht so:
Delphi-Quellcode:
const
  My_ColumnsEx: array[0..3] of TMyColumn = (
    (ColumnName: 'bla0'; FieldType: ftInteger),
    (ColumnName: 'bla1'; FieldType: ftInteger),
    (ColumnName: 'bla2'; FieldType: ftInteger),
    (ColumnName: 'bla3'; FieldType: ftInteger)
  );
Hat jemand eine Idee?

Reinhard Kern 12. Nov 2009 16:43

Re: Designfrage: initializing constant arrays
 
Zitat:

Zitat von M. Hassmann
Ich habe mal eine Designfrage:
ich habe ein const static Array:
...
Ich mag nicht den Quellcode für alle vordefinierten Columns kopieren müssen nur weil ich eine Spalte mehr in dem zweiten Array habe.
Hat jemand eine Idee?

Hallo,
wäre es nicht einfacher, zuerst das grosse Array mit Konstanten zu füllen und dann den entsprechenden Teil in das kleine Array zu kopieren?

Gruss Reinhard

semo 12. Nov 2009 19:24

Re: Designfrage: initializing constant arrays
 
Ich möchte nichts zur Laufzeit machen.
Beide Arrays sollen schon vordefiniert sein.

Hab mir halt heute die Frage gestellt, ob man den bereits definierten Inhalt des einen Arrays auch schon im zweiten Array verwenden kann.

himitsu 12. Nov 2009 19:31

Re: Designfrage: initializing constant arrays
 
über 'ne Include-Datei könnte man was machen, aber ansonsten geht es wohl nicht.

alzaimar 12. Nov 2009 20:07

Re: Designfrage: initializing constant arrays
 
Zitat:

Zitat von M. Hassmann
Ich möchte nichts zur Laufzeit machen.

Wieso nicht? Dann wäre dein Problem gelöst.

semo 12. Nov 2009 20:11

Re: Designfrage: initializing constant arrays
 
Es ist ja "nur" eine Designfrage.
Der Einfachheit halber dupliziert man den Code oder erledigt dies zur Laufzeit.

Es hätte ja sein können, dass es formschöner zu lösen geht und ich mal wieder was dazulerne :-)

himitsu 12. Nov 2009 20:32

Re: Designfrage: initializing constant arrays
 
Delphi-Quellcode:
type
  TMyColumn = record
    ColumnName: string;
    FieldType: TFieldType;
  end;

const
  My_Columns: array[0..2] of TMyColumn = (
    {$I Data.inc}
  );



const
  My_ColumnsEx: array[0..3] of TMyColumn = (
    {$I Data.inc},
    (ColumnName: 'bla3'; FieldType: ftInteger)
  );


Data.inc
Delphi-Quellcode:
    (ColumnName: 'bla0'; FieldType: ftInteger),
    (ColumnName: 'bla1'; FieldType: ftInteger),
    (ColumnName: 'bla2'; FieldType: ftInteger)

Reinhard Kern 12. Nov 2009 20:48

Re: Designfrage: initializing constant arrays
 
Zitat:

Zitat von M. Hassmann
Es hätte ja sein können, dass es formschöner zu lösen geht und ich mal wieder was dazulerne :-)

Hallo,

mal rein formal betrachtet - wenn die Arrays konstant sind (und bleiben), braucht du garkeine 2 davon. Also handelt es sich um einen Missbrauch von const, wozu Delphi leider einlädt. Aber elegant würde ich sowas nicht nennen, höchstens in dem Sinn, dass das Aufschweissen eines Tresors eleganter ist als das Sprengen.

Gruss Reinhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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