String[10] gibt 'nen ShortString an, welcher maximal 10 Zeichen enthalten kann ... aber ein ShortString hat noch 'nen LängenByte und das steht anfangs auf 0 (keine Zeichen enthalten)
du kannst da entweder
Array[0..9] of Char verwenden, oder mußt halt (z.B. per SetLength) die Länge noch definieren
[add]
ups: doch keine 0 am Anfang ... ein ShortString wird nicht initialisiert ... heißt, es kann da auch vollkommener Schrott drinstehn.
Delphi-Quellcode:
Var S: String[10];
S[0] := #2; // Index null entspricht der Position des Längenbytes
// das entspricht also SetLength(S, 2);
S[1] := 'a';
S[2] := 'b';
S[9] := 'x';
S = 'ab'
bei ShortString gibt es keine Terminierung mit #0 ... da zählt nur die Angabe im Längenbyte
[add2]
zum Testen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
Var S: String[10];
begin
SetLength(S, 4);
S[1] := 'a';
S[2] := 'b';
S[4] := 'd';
S[9] := 'x';
Label1.Caption := s;
end;
im Labem steht nun 'ab#d' (# ist ein zufälliges Zeichen)