Newsgroup: it.comp.lang.pascal
Titolo: Traccia d'esame

Scrivi una procedura per stampare un file di testo.
Questa era la domanda del mio esame.. Io ero convintissimo di avela
fatta bene, invece l'ho sbagliata :-/
Ora non la ricordo bene.. doveva essere piů o meno cosě
Procedure STAMPA (Var testo:text)
Var c:char;
Begin
Reset(testo);
Read(testo,c) [Legge la variabile c di tipo char dal file]
While not(eof(testo)) do begin
Read(testo,c)
Write(c) [Scrive in output la variabile]
End;
Readln; [Blocco del programma per permettere la lettura]
Close(testo);
End; [Fine Procedura]
Begin
Stampa(testo);
Readln;
End.
Cosa ho sbagliato ?

 Ora non la ricordo bene.. doveva essere più o meno così


 ha scritto nel messaggio
news:rEEa8.56171$om6.1...@news1.tin.it...


Riscrivo il codice della procedura corretta...
[cut]
ammetto di avere la memoria un po' offuscata... ma quando si lavora
con i file di testo non č necessario utilizzare un ciclo del tipo
while not(eol) all'interno di un while not/eof)?
saluti,
Fabio Ruini
fabi...@libero.it
 - ICQ #2887596
Linux Registered User #224097
Collaboratore 
http://www.zeusnews.com

 ha scritto nel messaggio
news:3c6bc8ac...@powernews.libero.it...


  Var TFile: Text;   Ch: Char;
lo scrivo solo per paranoia, ma solitamente gli identificatori
preceduti da T maiuscola nel pascal borland rappresentano
dei tipi, non delle variabili... magari qualcuno si confonde.
--
Dreadnaut
(Life would be easier if I had the source code)

 concatenazione di altre stringhe in esso.
mmmh in pascal Eof e Eoln non fanno niente di troppo strano:
entrambe sono funzioni boolean che prendono come parametro un
file (per Eoln puo' essere solo di tipo text) e restuiscono un
valore booleano che indica se ci troviamo alla fine del file (Eof)
o su un carattere di fine riga (Eoln) ma NON muovono la posizione
corrente nel file... forse ti confondi con SeekEof e SeekEoln che in
effetti cercano di raggiungere la fine del file o della riga di testo
e... pss... un occhio al quoting please ;-)


 Manca Assign per l'apertura del file...
non e' detto che manchi :-)  la procedura prende parametro "text"
quindi probabilmente la assign esiste nel blocco chiamante
la reset invece serve perche' riporta all'inizio del file
Nel mex ha detto di averla riscritta a memoria... prima chiedigli
se e' sicuro del main :-)


mmm, no comment :-)
cmq la scelta dei nomi da applicare alle variabili è libera... chi ha mai
detto che devo necessariamente usare lo stesso stile delle variabili nella
programmazione a oggetto? :-)  E poi qui nemmeno si sta parlando di
programmazione a oggetto... quindi ogni riferimento è puramente casuale ^_^
Hehehehehe :-)
ScherZoZamente Cooper ^_^
"Dreadnaut" <Drea...@liberoDALLASPAM.it> ha scritto nel messaggio
news:a9Va8.19198$Jo.5...@twister2.libero.it...


se e' sicuro del main :-)
Mi reinserisco nella comunicazione.
Ora vi parlo del mio esame.. Erano 3 esercizi da 10 punti l'uno.
Nei primi 2 esercizi ho preso 16/20 e nel terzo (la procedura,
appunto) ho preso la bellezza di 0/10 .. 
L'esame l'ho passato, ma per il rotto di cuffia.. Dunque mi appresto a
fare un orale con 16/30. Vabč... A parte questo, volevo sapere se,
secondo voi, ci sono errori tali da giustificare uno 0 come
valutazione (mica 4 o 5 : ZERO).
Alcune puntualizzazioni :
L'assign l'avevo dichiarato nel main che era pressappoco cosě
Begin
Assign (textfile,'file.txt');
Stampa(textfile)
Readln;
End.
Dunque.. in concreto : cosa ho sbagliato ?

 Cosa ho sbagliato ?
Ekko il listato giusto (secondo me!):
Program Stampa(Filez,output);
Var Filez:text;
Procedure Valori(Var Filez:text);
Var c:char;
begin
while Not eof(Filez) do
                     begin
                     while Not eoln(Filez) do
                                          begin
                                          read(Filez, c);
                                          write(c);
                                          End;
                     readln(Filez)
                     end;
end;
Begin
assign(Filez, 'C:\testo.txt');
reset(Filez);
Valori(Filez);
Close(Filez);
readln;
end.
Byez Gianni

Si cosi funziona anche. Per una corretta visualizzazione, sostituire:
    while Not eoln(Filez) do
con:
   while Not eof(Filez) do
Cordialmente, Cooper.


Beh a parte il primo carattere che non viene visualizzato
e se vogliamo il passaggio "strano" del parametro come
file (invece che come stringa, come proponeva Cooper)
direi nient'altro... forse e' un po' eccessivo lo sbattimento
di leggere carattere per carattere quando (forse) si poteva
fare per righe:
s: string;
while not eof (f) do
 begin
  readln(f,s);
  writeln(s);
 end;
ma forse c'era qualche altra contro-magagna :-)


 ha scritto nel messaggio
news:cJIb8.79311$3J1.2...@news2.tin.it...


 ha scritto nel messaggio
news:hkWb8.13770$eD3.5...@twister1.libero.it...
