Newsgroup: it.comp.lang.pascal
Titolo: Creazione file di testo

Finalmente sono riuscita a creare un text file senza che mi memorizzasse
anche il carattere di uscita ma il programma ha qualche problema.
Se scrivo:
oggi è
una bella giornata
Mi visualizza:
oggi è una bella giornata
Io invece vorrei che mi creasse il file di testo così come l'ho scritto (su
2 linee). Riporto il codice del programma in cui ho aggiunto anche la
funzione per il conteggio delle linee creata da ShOcK (non mi visualizza il
n. di linee ma forse questo è dovuto alla creazione sballata del file), un
po' riadattata.
Premetto: Uso il turbo pascal per windows versione 1.5
PROGRAM FileDiTesto (input, output, testo);
USES WINCRT;
TYPE
     lineaarray = string [80];
VAR
     linea : lineaarray;
     testo : text;
PROCEDURE CreaFile;
BEGIN
     assign (testo, 'testo.txt');
     rewrite (testo);
     writeln ('Inserisci il testo (* per terminare)');
     readln (linea);
     WHILE linea <> '*' DO begin
           write (testo, linea);
           readln (linea);
     END;
     close (testo);
END;
PROCEDURE VisualizzaFile;
BEGIN
     clrscr;
     reset (testo);
     WHILE not eof (testo) DO begin
           read (testo, linea);
           write (linea);
     END;
END;
BEGIN
     CreaFile;
     VisualizzaFile;
END.
FUNCTION GetLine : LongInt;
VAR
   NumeroLinee: LongInt;
BEGIN
   reset(testo);
   NumeroLinee :=  0;
   REPEAT
         readln (testo);
         NumeroLinee :=  NumeroLinee + 1;
   UNTIL eof (testo);
   close (testo);
   GetLine :=  NumeroLinee;   (* Ritorna le linee *)
END;
BEGIN
     CreaFile;
     VisualizzaFile;
     writeln;
     writeln ('Linee : ',GetLine);
END.

 n. di linee ma forse questo č dovuto alla creazione sballata del file), un


mmmh !
Conosci la differenza tra  writeln(text,stringa) e write(text,string)  e
readln(text,stringa) e read(text,stringa)
dove text è un file o il video
write e writeLN stampano ma con risultato differente
se scrivi
      write(text,'Ciao Daniela');
      write(text,' che scuola fai ?);   =====> il risultato su text è
Ciao Daniela che scuola fai ?
se scrivi
      writeLN(text,'Ciao Daniela');
      writeLN(text,'che scuola fai ?);   =====> il risultato su text è
Ciao Daniela
che scuola fai ?
Ossia il primo scrive e rimane sulla stessa linea quindi quando fai
while linea<>*
    readln(linea);
    write(testo,linea);
end;
non fai altro che scrivere sempre sulla stessa lineaaaaaaaaaaaaaa nel file
anche se al video il readln ti manda a capo quando batti invio
Ciao ReDiCuori
------------------------------------------
pascal su IRC : #turbopascal
pascal sul web : 
www.pascallike.cjb.net
------------------------------------------

Grazie mille. Io avevo provato solo a cambiare il write (in writeln) della
visualizzazione.
Adesso funziona.
"ReDiCuori" <redicu...@NOSPAMlibero.it> ha scritto nel messaggio
news:iNnZ6.23757$8R5.6...@news.infostrada.it...


 END;
Ciao,
prova
While linea <> '*' do begin
  writeLN (testo, linea);    (* memorizza nel file anche la sequenza #13#10
(CR LF), di carriage return e line feed)
  readln (linea);
end;
Ciao, Davide DG.

 ha scritto nel messaggio
news:Z9pZ6.24516$8R5.6...@news.infostrada.it...


  writeLN (testo, linea);    (* memorizza nel file anche la sequenza #13#10
....
Io sto realizando una rubrichetta che scrive i dati su un file, e cannibalizzare
il programma in oggetto mi fa comodo :)
Ho modificato il prog com indicato nei post ed ho compilato (usao FPC 1.04 su
una macchina Cyrix MII e come OS Linux 2.4.2), il risultato e' stato
il blocco del processo relativo al programma (o forse e' entrato in loop)
e dando un bel top -d1 da un'altra console ho visto che il programma
assorbina il 99%!!!!! dei cicli della CPU!!!
Cosa puo' essere stato?