Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Konstanten Array mit verschiedenen Typen


hRb - Do 20.08.15 16:19
Titel: Konstanten Array mit verschiedenen Typen
Ich möchte aus csv-Dateien nur bestimmte Parameter auslesen und in einer Textzeile darstellen. Zur besseren Übersichtlichkeit wollte ich nicht 3 getrennte Array formulieren, sondern sie in einem Record zusammenfassen, nämlich den Bezeichner(BezeiString), seine maximale Länge (BezeiLg), und die Position=Nummer (BezeiNr). Im Codeteil soll dann beim Auswerten der Überschriftenzeile die Variable BezeiNr dynamisch gefüllt werden (zur späteren Auswertung der Nutzzeilen). Ich schreibe:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
type
 tBezei = packed record
  BezeiString : string;
  BezeiLg     : integer;
  BezeiNr     : integer;
 end;

Const
 cBezei: array [1..2of tBezei =  //array später länger
  (('PersNr'50),
   ('Nachname, 60, 0)
   );


Der Compiler stellt den Fehlercursor im Const-Array hinter (('PersNr' und dem nachfolgenden Komma und meldet
[Fehler] Unit.pas(51): ')' erwartet, aber String-Konstante gefunden.
Was ist falsch, oder geht so eine Formulierung gar nicht.
Danke für Hinweise


Narses - Do 20.08.15 17:17

Moin!

Bei Verbunddatenstrukturen ("record") muss man AFAIR den Feldnamen dazu schreiben, also so: :idea: (aus dem Gedächtnis)

Delphi-Quelltext
1:
2:
3:
4:
5:
const
  cBezei: array [1..2of tBezei = (
    (BezeiString: 'PersNr';   BezeiLg: 5;  BezeiNr: 0),
    (BezeiString: 'Nachname'; BezeiLg: 60; BezeiNr: 0)
  );

Und das "packed" bei dem record solltest du dir auch nochmal sehr intensiv durch den Kopf gehen lassen, das kostet nämlich Performance. Das nimmt man nur dann, wenn man zu einem bestimmten Speicherlayout gezwungen wird. :nixweiss:

cu
Narses


hRb - Fr 21.08.15 17:37

Danke vielmals, funktioniert bestens!
hRb