Inhaltsverzeichnis

SetLength()-Procedure


Einleitung

Diese Standardfunktion legt die Länge einer Zeichenkette fest oder dimensioniert ein Array zur Laufzeit eines Programms neu.


Syntax

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


Codebeispiele

Beispiel 1

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.



Beispiel 2

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.



Hinweise

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!



Start - FAQ - Glossar - Sitemap - Impressum