Diese Standardfunktion legt die Länge einer Zeichenkette fest oder dimensioniert ein Array zur Laufzeit eines Programms neu.
Befehl | SetLength ( s:Variant, count:Integer ) |
---|---|
Funktion | Ändert die Länge einer Zeichenkette auf die angegbene Anzahl Zeichen oder erweitert ein Variablen-Array. |
Rückgabewert | ohne |
Die Zeichenketten 'Rennbahnzeitmessung Cockpit-XP V2' mit einer Länge von 34 Zeichen wird in die Variabel 'Text2' kopiert, die vorher auf eine Länge von 40 Zeichen festgelegt wurde.
var Text1 : String; Text2 : String; Laenge1 : Integer; Laenge2 : Integer; begin Text1 := 'Rennbahnzeitmessung Cockpit-XP V2.'; Laenge1 := Length( Text1 ); SetLength( Text2, Laenge1 + 6 ); Laenge2 := Length( Text2 ); Text2 := Copy( Text1, 0, Laenge1 ); cpShowMessage('Text 1: '+Text1+Chr(10)+Chr(13)+ 'Länge: '+IntToStr(Laenge1)+' Zeichen.'+Chr(10)+Chr(13)+ ' '+Chr(10)+Chr(13)+ 'Text 2: '+Text2+Chr(10)+Chr(13)+ 'Länge: '+IntToStr(Laenge2)+' Zeichen.'); end.
Das folgende Beispiel zeigt, welche Überraschungen mit der SetLength()-Prozedur erleben kann, stellt man Code nur ein wenig um. Hier wird zuerst die Variable 'Text2' mit Inhalt gefüllt und dann auf die endgültige Anzahl Zeichen erweitert.
{ Pascal Script Engine } var Text1 : String; Text2 : String; Laenge1 : Integer; Laenge2 : Integer; begin Text1 := 'Rennbahnzeitmessung Cockpit-XP V2.'; Laenge1 := Length( Text1 ); Text2 := Text1; SetLength( Text2, Laenge1 + 6 ); Laenge2 := Length( Text2 ); cpShowMessage('Text 1: '+Text1+Chr(10)+Chr(13)+ 'Länge: '+IntToStr(Laenge1)+' Zeichen.'+Chr(10)+Chr(13)+ ' '+Chr(10)+Chr(13)+ 'Text 2: '+Text2+Chr(10)+Chr(13)+ 'Länge: '+IntToStr(Laenge2)+' Zeichen.'); end.
Was fällt beim Betrachten des Screenshots auf?
Der Inhalt der Variablen ist in der Bildschirmausgabe identisch, die Länge des Textes wird jedoch mit 40 Zeichen angegeben.
Bei den restlichen 6 Zeichen handelt es sich um derzeit nicht belegte Einzelzeichen, deren Platz nicht angezeigt wird, da er mit keinem bekannten Zeichen belegt ist (Beispiel 1).
In Beispiel 2 erweitern wird den von der Variablen Text2
belegten Speicherbereich um 6 Zeichen. Dort können sich jedoch schon Inhalte befinden, die noch von vorhergehenden Speicheroperationen dort liegen. Das sieht man ganz gut auf dem 2. Screenshot. Man sollte also immer erst den benötigten Platz mit SetLength festlegen und anschließend mit Inhalt füllen!