Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37
  1. #1
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453

    [PASCAL] Scrivere carattere per carattere

    Salve!

    Solitamente non posto in queste sezioni, ma solo in quelle riguardanti PHP o JS... ma adesso mi trovo alle prese con Pascal, un po' per diletto, un po' per obbligo scolastico... E mi servirebbe una mano... Spero di non aver sbagliato posto!

    Devo scrivere una stringa, e vorrei che venisse scritta carattere per carattere, con una certa velocità da impostare...

    Cioè, se metto:

    writeln('Stringa da scrivere');

    Ottengo:

    Stringa da scrivere

    Tutto in un sol botto.

    Io vorrei invece che venisse scritta carattere per carattere, possibilmente impostando anche la velocità di scrittura!

    Potete aiutarmi??

    Grazie!

    Ciao

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    La WriteLn si chiama così perchè scrive una linea intera apponendo un ritorno a capo alla fine.

    La procedura Write è quella che fa al caso tuo: scrive un carattere singolo nel dispositivo di output predefinito, spostando il cursore al carattere successivo.

    Se vuoi introdurre un effetto di rallentamento, ti basta separare una Write dalla successiva con la generazione di un ritardo, ottenuto con un "ciclo visioso" o, ancora meglio, con l'uso della procedura Delay, se non ricordo male.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    In pratica in questo modo:

    program QuelloCheVuoi;
    uses Crt;
    begin
    write ('S');
    delay (1000);
    write ('T');
    delay (1000);
    write ('R');
    delay (1000);
    write ('I');
    delay (1000);
    write ('N');
    delay (1000);
    write ('G');
    delay (1000);
    write ('A');
    end.

    La funzione delay rallenta l'esecuzione del programma per N millisecondi (quindi 1000 significa 1 secondo)

  4. #4
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    Quindi ad esempio come uso Delay in combinazione con write?

    Ok ho capito la differenza tra writeln e write, ma nn so come usare delay!

    Grazie!

  5. #5
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    Ok si erano incrociati i messaggi! Ora provo, grazie!

    in ogni caso è un po' scomodo fare così.. se dovessi scrivere un testo molto lungo sarebbe laborioso! Nessuna via più rapida???

    Grazie ancora per le dritte!


  6. #6
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Allora...
    Delay è una funzione predefinita che permette bloccare l'esecuzione di un programma per un certo numero di millisecondi (millesimi di secondo)

    Quindi se scrivi:

    write ('A');
    delay (3000);
    write ('B');

    il programma prima stampa A , poi aspetta 3 secondi e stampa B
    Alla fine l'output sarà comunque:

    AB

    Capito?

    Per usarlo però devi dichiarare il modulo Crt
    Quindi appena dopo aver definito il nome del programma devi scrivere:

    uses Crt;

    Se non lo scrivi delay non funziona...

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    codice:
      begin
    
        for i:=1 to Length( stringa ) do
        begin
          Write( stringa[i] );
          Delay( 1000 );
        end;
    
      end.

  8. #8
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Scomodo? beh certo

    Ma se vuoi scrivere carattere per carattere devi fare così

    Ovviamente è molto più semplice fare

    write ('Testo');

  9. #9
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    Ragazzi non so che dirvi, ma non mi funziona! Vi posto il codice

    program PROVA;

    uses
    crt;
    begin
    clrscr;
    textcolor(Green);
    write ('S');
    delay (1000);
    write ('T');
    delay (1000);
    write ('R');
    delay (1000);
    write ('I');
    delay (1000);
    write ('N');
    delay (1000);
    write ('G');
    delay (1000);
    write ('A');


    repeat until keypressed;

    end.

    Che ottengo? STRINGA, ma non scrive le lettere a distanza di un secondo l'una dall'altra!

    Dove sbaglio?? :master:

    Grazie!

  10. #10
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    non capisco dovrebbe funzionare...
    comunque vedo alcuni errori

    -uses Crt; si scrive su una sola riga

    -TextColor che io sappia prefede solo i numeri corrispondenti ma non i nomi dei colori

    -l'ultima istruzione prima dell' end. non ha bisogno del punto e virgola


    Per quanto riguarda il problema adesso che ci penso forse il numro all'interno di delay () deve essere messo tra virgolette o apici...
    Non mi ricordo ,prova...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.