Ein Feld von int64-Werten auf dem Heap, dessen Länge zur Laufzeit feststeht und sich ändern lässt. Vega hält damit Zahlenreihen, die kein Objekt je Eintrag rechtfertigen: die Spaltenbreiten eines TStringGrid, die Stilklassen eines TControl, die Auswahlmarken einer TListBox.
Unit: Vega.Lists
→ Alle Steuerelemente · TObjectList · array<T> in der Sprachreferenz
Warum kein [N]int64? Weil dessen Länge zur Übersetzungszeit feststehen müsste. Warum kein array<int64>? Weil Vega als Bibliothek ohne die dynamischen Container der Standardbibliothek auskommen soll — und weil der Speicher hier bewusst auf dem Heap liegt: Als Inline-Feld in einer TControl-Ableitung würde er in dessen Kinderfeld ragen (#1630).
unit Main;
import std.io;
import Vega.Types;
import Vega.Strings;
import Vega.Lists;
fn main(): int64 {
var a: TIntArray := NewIntArray(4); // Laenge steht beim Anlegen fest
a.Put(0, 120);
a.Put(1, 80);
a.Put(2, 200);
PrintLn(StrConcat("Laenge: ", IntToStr(a.Length)));
PrintLn(StrConcat("a[2]: ", IntToStr(a.Get(2))));
// Ausserhalb der Laenge: Get liefert 0, Put tut nichts — kein Absturz
PrintLn(StrConcat("a[99]: ", IntToStr(a.Get(99))));
a.Put(99, 1);
a.Resize(6); // vorhandene Werte bleiben
PrintLn(StrConcat("nach Resize a[2]: ", IntToStr(a.Get(2))));
PrintLn(StrConcat("neu angelegt a[5]: ", IntToStr(a.Get(5))));
a.Fill(7);
PrintLn(StrConcat("nach Fill a[0]: ", IntToStr(a.Get(0))));
a.Destroy();
return 0;
}
Laenge: 4
a[2]: 200
a[99]: 0
nach Resize a[2]: 200
neu angelegt a[5]: 0
nach Fill a[0]: 7
Übersetzt und ausgeführt mit lyxc 1.1.3I.
NewIntArray(4). Resize ändert sie später; vorhandene Werte bleiben, neue Plätze sind 0.Get eine 0, und Put tut nichts. Dieselbe Nachsicht wie bei GetCell im Grid — ein Indexfehler artet nicht in einen Speicherzugriff aus, fällt aber auch nicht auf.Fill(v) setzt alle Plätze auf denselben Wert — der übliche Weg, ein Feld zurückzusetzen.Destroy() gibt den Speicher frei; danach ist Length 0.Alle Eigenschaften, auch die geerbten.
| Name | Typ | Bedeutung | Herkunft |
|---|---|---|---|
Data | int64 | Adresse des Speicherblocks | eigen |
Length | int64 | Zahl der Plätze | eigen |
Alle Methoden, auch die geerbten.
| Signatur | Zweck | Herkunft |
|---|---|---|
Create(n: int64): void | Anlegen; NewIntArray(n) | eigen |
Destroy(): void | Speicher freigeben | eigen |
Get(i: int64): int64 | Wert lesen; 0 außerhalb der Länge | eigen |
Put(i: int64, v: int64): void | Wert setzen; außerhalb der Länge wirkungslos | eigen |
Fill(v: int64): void | Alle Plätze auf denselben Wert | eigen |
Resize(n: int64): void | Länge ändern; vorhandene Werte bleiben, neue sind 0 | eigen |
Dazu die Hülle NewIntArray(n: int64): TIntArray.
Keine.
Letzte Aktualisierung: 2026-08-19 — API aus Vega/Lists.lyx erhoben, Beispiel mit lyxc 1.1.3I übersetzt und ausgeführt.