Inhaltsverzeichnis

TStringList — Liste von Zeichenketten

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


Einordnung

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.


Verwendung

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.


Besonderheiten


Eigenschaften

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

Methoden

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.


Ereignisse

Keine.

Letzte Aktualisierung: 2026-08-19 — API aus Vega/Lists.lyx erhoben, Beispiel mit lyxc 1.1.3I übersetzt und ausgeführt.