Ich dachte, das war eine der Neuerungen in einer der letzten Delphi-Versionen, dass man bei Array-Konstanten keine Länge mehr angeben muss???
Derzeit deklarierst du einen dynamischen Array-Typ, allerdings ein statisches Array. Deklariere
TKameraTypRec
mal als statischen Array-Typ. Dann klappt das auch:
Delphi-Quellcode:
//TKameraTypArr = array of TKameraTypRec;
TKameraTypArr = array [0..0] of TKameraTypRec;
Selbst falls du es kompiliert bekommen hättest, hätte der Compiler ja spätestens bei den runden Klammern (
(...)
) gemeckert, weil diese nur für statische Array-Konstanten zulässig sind. Du hättest eckige Klammern (
[...]
) verwenden müssen. Dass das mit dynamischen Array-Konstanten so nicht klappt hat leider mit dem Fakt zu tun, dass diese intern ganz anders gespeichert werden als statische Array-Konstanten. Es sind eigentlich nur Konstante Zeiger auf eine anonyme dynamische Array-Variable. Du kannst die Beschränkung mit Inline-Variablen umgehen, dann sollte es funktionieren, aber würde den Ramen sprengen.
Typisierte Konstanten sind IMMER "schreibgeschützte" Variaben.
Nicht "IMMER", aber man kann sagen "immer". Großgeschrieben deshalb nicht, weil das mit dem "schreibgeschützt" halt so pauschal auch nicht stimmt. Deshalb kannst du mit dynamischen Array-Konstanten auch so viel lustigen Schindluder wie den hier treiben:
Delphi-Quellcode:
const
A: TArray<Char> = ['H', 'E', 'L', 'L', 'O'];
begin
Writeln(A[0] + A[1] + A[2] + A[3] + A[4]); // >>HELLO
A[0] := 'W';
A[1] := 'O';
A[2] := 'R';
A[3] := 'L';
A[4] := 'D';
Writeln(A[0] + A[1] + A[2] + A[3] + A[4]); // >>WORLD
end.
Hmm, Name wird fett dargestellt, ist das evtl. ein reserviertes Wort?
Nein, ist es nicht. Du kannst es ja auch gern anstatt mit
Name
mit dem Feld
Breite
versuchen und wirst merken, dass es genauso wenig funktioniert.
und selbst das Highlighting in der
IDE ist nicht immer korrekt.
Mein Favorit in Delphi ist bis heute:
property add
, aus irgendeinem mir nicht erklärlichen Grund wird dort (und zwar nur dort) der Begriff
add
hervorgehoben...