Eine wachsende Liste von Texten, die ihre Einträge besitzt. Vega benutzt sie überall dort, wo eine Oberfläche Zeilen hält: die Einträge einer TListBox oder TComboBox, die Reiter eines TTabControl, die Zeilen eines TMemo, die Spaltentexte eines TListItem.
Unit: Vega.Lists
→ Alle Steuerelemente · TObjectList · TTextBuffer
Intern ist es eine Tabelle mit Adressen von TTextBuffer-Instanzen — als Rohspeicher, weil die Länge zur Laufzeit wächst und Lyx keine dynamischen Felder kennt. Nach außen sieht man davon nichts: Add nimmt ein pchar, Get liefert eines zurück.
Der Unterschied zu TObjectList: Diese Liste besitzt ihre Einträge und gibt sie beim Destroy() mit frei. Die Objektliste hält nur Verweise und räumt nichts weg.
unit Main;
import std.io;
import Vega.Types;
import Vega.Strings;
import Vega.Lists;
fn main(): int64 {
var l: TStringList := NewStringList();
l.Add("Bass");
l.Add("Snare");
l.Add("Hihat");
PrintLn(StrConcat("Anzahl: ", IntToStr(l.Count)));
PrintLn(StrConcat("erster: ", l.Get(0)));
PrintLn(StrConcat("Index von Snare: ", IntToStr(l.IndexOf("Snare"))));
// Sortiert halten und Dubletten abweisen
l.Sorted := true;
l.AllowDuplicates := false;
l.Sort();
PrintLn(StrConcat("nach Sort: ", l.Get(0)));
var rc: int64 := l.Add("Bass"); // schon vorhanden
PrintLn(StrConcat("Dublette -> rc=", IntToStr(rc)));
// Text am Stueck: die Bruecke zu TMemo
var puffer: TTextBuffer := new TTextBuffer();
l.ToText(puffer);
Print("als Text: "); Print(puffer.AsPChar()); Print("\n");
var l2: TStringList := NewStringList();
l2.SetText("eins\nzwei\ndrei");
PrintLn(StrConcat("aus Text: ", IntToStr(l2.Count)));
puffer.Destroy();
l2.Destroy();
l.Destroy(); // gibt auch die Eintraege frei
return 0;
}
Anzahl: 3
erster: Bass
Index von Snare: 1
nach Sort: Bass
Dublette -> rc=-1
als Text: Bass
Hihat
Snare
aus Text: 3
Übersetzt und ausgeführt mit lyxc 1.1.3I.
Destroy() gibt die Liste und alle Einträge frei. Da die Liste ihre Texte besitzt, wäre alles andere ein Leck.Sorted und AllowDuplicates sind zwei einfache Schalter — dasselbe, was Delphi als Sorted und Duplicates kennt. Bei AllowDuplicates := false liefert Add für eine Dublette -1 statt eines Index.Sorted := true wirkt beim Einfügen (Add sucht die Position binär); eine bereits gefüllte Liste ordnet Sort().ä bei a) ist eine eigene Baustelle — ä landet also hinter z.Get liefert bei ungültigem Index einen leeren Text, Buffer eine 0. Beides stürzt nicht ab.ToText und SetText sind die Brücke zum TMemo: Zeilen ↔ ein Text mit Zeilenumbrüchen. Ein leerer Text ergibt eine leere Liste, nicht eine Liste mit einer leeren Zeile.Alle Eigenschaften, auch die geerbten.
| Name | Typ | Bedeutung | Herkunft |
|---|---|---|---|
Items | int64 | Adresse der Tabelle mit den Textpuffern | eigen |
Count | int64 | Zahl der Einträge | eigen |
Capacity | int64 | Platz für so viele Einträge ohne Neubelegung | eigen |
Sorted | bool | Neue Einträge sortiert einfügen | eigen |
AllowDuplicates | bool | Dubletten zulassen; sonst liefert Add -1 | eigen |
Alle Methoden, auch die geerbten.
| Signatur | Zweck | Herkunft |
|---|---|---|
Create(): void | Anlegen; NewStringList() | eigen |
Destroy(): void | Liste und alle Einträge freigeben | eigen |
Add(s: pchar): int64 | Anhängen bzw. sortiert einfügen; -1 bei abgelehnter Dublette | eigen |
Insert(index: int64, s: pchar): int64 | An einer Position einfügen | eigen |
Put(index: int64, s: pchar): void | Eintrag ersetzen | eigen |
Get(index: int64): pchar | Eintrag lesen; leerer Text bei ungültigem Index | eigen |
Buffer(index: int64): TTextBuffer | Eintrag als Textpuffer; 0 bei ungültigem Index | eigen |
LengthOf(index: int64): int64 | Länge eines Eintrags | eigen |
Delete(index: int64): void | Eintrag entfernen und freigeben | eigen |
Remove(s: pchar): bool | Ersten passenden Eintrag entfernen | eigen |
Clear(): void | Alle Einträge entfernen und freigeben | eigen |
IsEmpty(): bool | Liste ist leer | eigen |
IndexOf(s: pchar): int64 | Index eines Textes; -1, wenn nicht enthalten | eigen |
Contains(s: pchar): bool | Text ist enthalten | eigen |
CompareAt(index: int64, s: pchar): int64 | Byteweiser Vergleich: <0, 0, >0 | eigen |
SortedPos(s: pchar): int64 | Einfügeposition in einer sortierten Liste (binäre Suche) | eigen |
Sort(): void | Liste sortieren (Einfügesortieren) | eigen |
Exchange(a: int64, b: int64): void | Zwei Einträge tauschen | eigen |
ToText(dst: TTextBuffer): void | Alle Zeilen in einen Puffer, durch Umbrüche getrennt | eigen |
SetText(s: pchar): void | Text an den Umbrüchen in Zeilen zerlegen | eigen |
Reserve(n: int64): bool | Platz für n Einträge vorab belegen | eigen |
Dazu die Hülle NewStringList(): TStringList.
Keine.
Letzte Aktualisierung: 2026-08-19 — API aus Vega/Lists.lyx erhoben, Beispiel mit lyxc 1.1.3I übersetzt und ausgeführt.