Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050

    [PASCAL] Leggere stringa carattere per carattere

    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

  2. #2
    Utente di HTML.it L'avatar di pak0
    Registrato dal
    Dec 2004
    Messaggi
    263
    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;
    A che ti serve ? ? ?

    Per la prova non ti posso risp adesso, perchè non posso. Ti dirò stasera.


  3. #3
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    Se hai scritto qualcosa (quindi i>0) e l'ultimo tasto premuto è il backspace allora:
    codice:
    Delete(command,i-1,1); {cancella il carattere backspace (anche lui ha un simbolo come tutti gli altri caratteri)}
    i:=i-2;                {essendoci un carattere in meno anche I deve valere meno}
    IF i>=0 THEN Write(Chr(8),' ',Chr(8)); {con le operzioni di prima nel video si vede ancora il carattere di backspace quindi lo cancella dallo schermo}
    Aiuto

  4. #4
    Utente di HTML.it L'avatar di pak0
    Registrato dal
    Dec 2004
    Messaggi
    263
    Per correggere la stringa, dovresti usare le "array of char".


    if carattere='quello che vuoi' then
    i:=i-1; {i è il numero dell'array, quindi torna al carattere priecedente}

    Facile.


  5. #5
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050

    Re: [PASCAL] Leggere stringa carattere per carattere

    Originariamente inviato da cso
    ...
    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
    Ma il problema non è questo

  6. #6

  7. #7
    Utente di HTML.it L'avatar di pak0
    Registrato dal
    Dec 2004
    Messaggi
    263
    wè,

    io non ho riscontrato alcun bug.


  8. #8
    Utente di HTML.it L'avatar di cso
    Registrato dal
    Aug 2004
    Messaggi
    2,050
    Magari dipende anche dal compilatore...
    Io uso Turbo Pascal 7.0!

    Non sono un novellino perchè ho studiato pascal l'anno scorso, assembly per due anni e sto facendo Java che non mi piace proprio.

    Sto rispolverando un po' di pascal per non dimenticare ma qui apparte te non mi aiuta nessuno!

    Lo so che nessuno è obbligato a rispondermi ma caspita, vedo gente che aiuta gli altri facendogli un programma intero di 200 righe e io che chiedo una ca**ata non merito l'attenzione di nessuno!

  9. #9
    Utente di HTML.it L'avatar di pak0
    Registrato dal
    Dec 2004
    Messaggi
    263
    anche io usavo turbo pascal 7.0, ma adesso uso DevPascal (molto meglio).

    PS: nessuno se ne fo**e di te. Kissà perchè ? ? ? :master:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.