Vega.Strings — Veränderbarer Text und UTF-8

Lyx kennt nur pchar — eine Adresse auf nullterminierte Bytes, die sich nicht wachsen lassen. Eingabefelder brauchen aber genau das: einfügen, löschen, den Puffer vergrößern. Dafür gibt es TTextBuffer, dazu die UTF-8-Rechnung, die Byte- und Zeichenpositionen auseinanderhält.

Quelldatei: Vega/Strings.lyx

Alle Units · Alle Steuerelemente · Vega VCL


Klassen

Klasse Basis Zweck
TTextBuffer Wachsender Textpuffer mit Byte- und Zeichenrechnung

Konstanten

Name Typ Wert Bedeutung
VEGA_TEXT_MIN_CAP int64 32 Anfangsgröße, bevor der Puffer erstmals wächst

Freie Funktionen

Signatur Zweck
Utf8CharLen(b: int64): int64 Wie viele Bytes das Zeichen hat, das mit diesem Byte beginnt
Utf8IsTrail(b: int64): bool Ist das ein Folgebyte, also keine Zeichengrenze
Utf8Decode(addr: int64, i: int64): int64 Zeichen an dieser Byteposition als Codepunkt
Utf8LenOf(cp: int64): int64 Wie viele Bytes dieser Codepunkt braucht
Utf8Encode(addr: int64, cp: int64): int64 Codepunkt an diese Adresse schreiben; liefert die Zahl der Bytes
PCharEqual(a: pchar, b: pchar): bool Zwei pchar auf gleichen Inhalt prüfen
PCharLen(s: pchar): int64 Länge einer pchar in Bytes
IntToText(v: int64, dst: TTextBuffer): void Zahl in einen Textpuffer schreiben
PCharToInt(s: pchar): int64 Zahl aus Text lesen
NewTextBuffer(): TTextBuffer Erzeugt einen leeren Textpuffer

Zu beachten

  • Positionen sind Byte-Positionen. PosOfChar und CharIndexAt rechnen um, NextPos/PrevPos wandern zeichenweise.
  • AsPChar() gilt nur bis zum nächsten Wachsen des Puffers — den Zeiger nicht aufheben.
  • Die Unit hängt nur an std.alloc und kennt weder Canvas noch Controls; ein Textpuffer soll auch ohne Fenster brauchbar sein.

Abhängigkeiten