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..2] of tBezei = (('PersNr', 5, 0), ('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..2] of 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