Ciao a tutti.

La mia non è una richiesta di aiuto ma di ottimizzazione di un algoritmo per leggere una stringa carattere per carattere.
codice:
USES Crt;
VAR i:INTEGER;
    command:STRING;
    s:CHAR;
BEGIN
clrscr;
Write('Inserisci una stringa: ');
FOR i:=1 TO 32 DO
           Begin
             s:=ReadKey;
             IF (s=#13) or (s=#27) THEN i:=32; {se è invio o esc esce dal ciclo}
             IF (s<>#7) AND (s<>#8) AND (s<>#10) THEN
                                     begin
                                       Write(s);
                                       command:=command+s;
                                     end;

             IF (s=#8) AND (i>0) THEN {se è il backspace...}
                              begin
                                Delete(command,i-1,1);
                                i:=i-2;
                                IF i>=0 THEN Write(Chr(8),' ',Chr(8));
                              end;
           End;
END.
Il programma ha due Bug

1- Se si inseriscono tanti caratteri a caso velocemente non si riesce più a cancellare interamente quello che si ha scritto.

2- Se si preme Alt+7 e Alt+8 continuamente il cursore torna indietro mangiucchiando la parola del writeln: Inserisci una stringa:

3- Se trovate altri bug ve ne sarò grato

In attesa di risposte Grazie