PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit String


Poison Nuke
20.06.2002, 22:33
Hi,

ich habe mir eine Funktion gecodet, die im Grafikmodus mit hilfe von readkey den String einliest.

Soweit so gut. Aber wenn ich vor dem Einlesen den Hilfsstring ein Leerzeichen zuweise, dann ist bei der Ausgabe der eigentliche String ebenfalls nur 1 Zeichen lang.
FUNCTION readstr:string;
VAR c : char;
xpos,ypos : integer;
t : string;
BEGIN
i:=1;
xpos:=getx-8;
ypos:=gety;
t:=' ';
REPEAT
c:=readkey;
CASE c OF
#8 : IF i>1 THEN BEGIN
setcolor(0); outtextxy(xpos+(i-1)*8,ypos,'█');
moveto(getx-8,gety);
setcolor(14);
dec(i);
END;
#32..#154 : BEGIN
t[i]:=c;
outtextxy(xpos+(i*8),ypos,c);
inc(i);
END;
END;
UNTIL (c=#27) OR (c=#13);
readstr:=t;
END;
Wenn ich diese Zuweisung weglasse, dann kommt der String in voller Länge an, nur das bei mehrfachverwendung dann die alten Strings im RAM bleiben.

Könnt ihr mir sagen, woran das liegt, und wie ich es umgehen kann???


Felix Kaiser
21.06.2002, 01:01
Setz nach dem UNTIL mal diese Zeile:
t[0]:= Chr(i);
Du inizialisierst den String auf eine Länge von 1. Aber du veränderst die Größe von ihm nicht, du indizierst lediglich die einzelnen Zeichen, die laut Längenbyte nicht existieren.

Poison Nuke
21.06.2002, 10:24
asooooo.....

danke für deinen Antwort, jetzt weiß ich wenigstens wieso das os ist.

Außerdem konnte ich dadurch eine bessere Lösung finden:
Anstatt immer nur dem String an der speziellen Stelle ein Zeichen zuzuweisen, hab ich einfach das gemacht:
t:=t+c;