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???
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???