====== 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'' → [[lyx_-_programmiersprache:vega:units|Alle Units]] · [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega|Vega VCL]] ---- ===== Klassen ===== ^ Klasse ^ Basis ^ Zweck ^ | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | — | Wachsender Textpuffer mit Byte- und Zeichenrechnung | ===== Konstanten ===== ^ Name ^ Typ ^ Wert ^ Bedeutung ^ | ''VEGA_TEXT_MIN_CAP'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|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 ===== **Importiert:** ''Vega.Mem'' **Wird importiert von:** [[lyx_-_programmiersprache:vega:units:actions|Vega.Actions]], [[lyx_-_programmiersprache:vega:units:backend|Vega.Backend]], [[lyx_-_programmiersprache:vega:units:backend_lyxos|Vega.Backend.LyxOS]], [[lyx_-_programmiersprache:vega:units:backend_null|Vega.Backend.Null]], [[lyx_-_programmiersprache:vega:units:backend_win32|Vega.Backend.Win32]], [[lyx_-_programmiersprache:vega:units:backend_x11|Vega.Backend.X11]], [[lyx_-_programmiersprache:vega:units:calendar|Vega.Calendar]], [[lyx_-_programmiersprache:vega:units:chrome|Vega.Chrome]], [[lyx_-_programmiersprache:vega:units:colorctrls|Vega.ColorCtrls]], [[lyx_-_programmiersprache:vega:units:colordlg|Vega.ColorDlg]], [[lyx_-_programmiersprache:vega:units:component|Vega.Component]], [[lyx_-_programmiersprache:vega:units:control|Vega.Control]], [[lyx_-_programmiersprache:vega:units:datetimepicker|Vega.DateTimePicker]], [[lyx_-_programmiersprache:vega:units:dialogs|Vega.Dialogs]], [[lyx_-_programmiersprache:vega:units:editbtn|Vega.EditBtn]], [[lyx_-_programmiersprache:vega:units:edits|Vega.Edits]], [[lyx_-_programmiersprache:vega:units:extctrls|Vega.ExtCtrls]], [[lyx_-_programmiersprache:vega:units:extras|Vega.Extras]], [[lyx_-_programmiersprache:vega:units:filedlg|Vega.FileDlg]], [[lyx_-_programmiersprache:vega:units:files|Vega.Files]], [[lyx_-_programmiersprache:vega:units:font|Vega.Font]], [[lyx_-_programmiersprache:vega:units:fontdlg|Vega.FontDlg]], [[lyx_-_programmiersprache:vega:units:grids|Vega.Grids]], [[lyx_-_programmiersprache:vega:units:hints|Vega.Hints]], [[lyx_-_programmiersprache:vega:units:images|Vega.Images]], [[lyx_-_programmiersprache:vega:units:layout|Vega.Layout]], [[lyx_-_programmiersprache:vega:units:lfmclasses|Vega.LfmClasses]], [[lyx_-_programmiersprache:vega:units:lfmload|Vega.LfmLoad]], [[lyx_-_programmiersprache:vega:units:lfmparse|Vega.LfmParse]], [[lyx_-_programmiersprache:vega:units:lfmsave|Vega.LfmSave]], [[lyx_-_programmiersprache:vega:units:lfmvalue|Vega.LfmValue]], [[lyx_-_programmiersprache:vega:units:listctrls|Vega.ListCtrls]], [[lyx_-_programmiersprache:vega:units:listview|Vega.ListView]], [[lyx_-_programmiersprache:vega:units:lists|Vega.Lists]], [[lyx_-_programmiersprache:vega:units:maskedit|Vega.MaskEdit]], [[lyx_-_programmiersprache:vega:units:menus|Vega.Menus]], [[lyx_-_programmiersprache:vega:units:picture|Vega.Picture]], [[lyx_-_programmiersprache:vega:units:stdctrls|Vega.StdCtrls]], [[lyx_-_programmiersprache:vega:units:style|Vega.Style]], [[lyx_-_programmiersprache:vega:units:themefile|Vega.ThemeFile]], [[lyx_-_programmiersprache:vega:units:themes|Vega.Themes]], [[lyx_-_programmiersprache:vega:units:trees|Vega.Trees]], [[lyx_-_programmiersprache:vega:units:truetype|Vega.TrueType]], [[lyx_-_programmiersprache:vega:units:valuelist|Vega.ValueList]] Letzte Aktualisierung: 2026-08-20 — Klassen, Aufzählungen, Konstanten und freie Funktionen maschinell aus ''Vega/Strings.lyx'' erhoben.