| Autore |
Discussione  |
|
|
Spike
Utente medio
 

Città: Kakariko Prov.: Hyrule
|
Inserito il - 17/12/2003 : 18:07:38
|
Salve ragazzi! posto qui questa domanda sul pascal...fa nulla?
Quando compilo un programma in pascal al cui interno definisco una variabile di tipo file al momento del run mi dà un errore di runtime!
anche in questo semplice programma dove inizializzo il file alla scrittura mi da un errore di runtime:
program prova; uses wincrt;
type f = file of integer;
var a : f;
begin
rewrite(a); end.
Devo usare percaso altre unit oltre alla wincrt!
bò sapete aiutarmi?
see you...
|
.: Pace Amore Empatia .. Kurt :.
.: 2 + 2 = 5 :. |
|
|
Dreamhell
Utente Cool
 

Città: o__O Bari O__o
|
Inserito il - 17/12/2003 : 20:00:44
|
devi usare l'istruzione assign nel corpo del main ,che appunto assegna alla variabile di tipo file da te dichiarato il percorso fisico del file.
c'è anche un secondo problema: ricordati di chiudere il file al termine del programma, nel tuo caso:
program prova; uses wincrt;
type f = file of integer;
var a : f;
begin
ASSIGN(a,'c:\file.txt'); /* lo crei fisicamente */
rewrite(a); /* così lo inizializzi alla scrittura */
/* ..... */
close(a);
end.
cmq a breve cerchero di uppare sul sito il programma con relativa documentazione che ho portato all'esame... |

|
 |
|
|
Spike
Utente medio
 

Città: Kakariko Prov.: Hyrule
|
Inserito il - 18/12/2003 : 14:56:34
|
Grazie mille dreemhell sei stato chiarissimo!
Avevo dimenticato completamente l'istruzione assign!
ancora grazie! see you... |
.: Pace Amore Empatia .. Kurt :.
.: 2 + 2 = 5 :. |
 |
|
|
Dreamhell
Utente Cool
 

Città: o__O Bari O__o
|
Inserito il - 18/12/2003 : 17:26:21
|
di niente  |

|
 |
|
|
MnK
Nessuno può capire
 
Regione: Puglia
Prov.: Bari
Città: Molfetta
|
Inserito il - 03/01/2004 : 12:34:32
|
ragazzi se a qualcuno interessa posso mettere a disposizione il mio sorgente in pascal (se ci capite qualcosa) si tratta della gestione di una azienda usa ovviamente i file ed e' fatto con i controfiocchi... cn tanto di gestione errori ecc.. se interessa lo metto come allegato. |
La bontà è l'unico investimento che non fallisce mai. (H. D. THOUREAU) Ah LA PRIKKOPRAKK L'antica arte della ristorazione cinese....
|
 |
|
|
Spike
Utente medio
 

Città: Kakariko Prov.: Hyrule
|
Inserito il - 05/01/2004 : 12:29:13
|
Ho un altro dubbio su pascal e file :
posto una parte del programmino:
program prova; uses wincrt;
type name = string[30];
f = file of name;
var elenco : f; elem,nome : name; trovato : boolean;
begin
assign(elenco,'nomi'); checkeof := true; rewrite(elenco);
while not(eof) do begin readln(elem); write(elenco,elem); end;
close(elenco);
writeln;writeln('digita nome da cercare'); read(nome);
end.
il programma legge delle stringhe fino a che non digito ctrl-z!
all'uscita del while passa alla lettura di un altra stringa, che mi serve nell'altra parte del programma!
il problema sta qui, il programma termina all'uscita del while ,senza darmi la possibilità di inserire la stringa che intendo cercare!
non so se sono stato chiaro!
cmq questo problema si verifica quando per uscire dal while utilizzo il controllo del EOF!
se invece per uscire dal while utilizzo un altro controllo ( ad esempio quando digito una determinata parola) allora mi permette di inserire la stringa alla fine!
davvero non so se ho reso l'idea potete aiutarmi
see you... |
.: Pace Amore Empatia .. Kurt :.
.: 2 + 2 = 5 :. |
 |
|
|
MnK
Nessuno può capire
 
Regione: Puglia
Prov.: Bari
Città: Molfetta
|
Inserito il - 05/01/2004 : 13:33:06
|
| sicuramente il problema e' checkeof.sai esattamente cosa fa? |
La bontà è l'unico investimento che non fallisce mai. (H. D. THOUREAU) Ah LA PRIKKOPRAKK L'antica arte della ristorazione cinese....
|
 |
|
|
Dreamhell
Utente Cool
 

Città: o__O Bari O__o
|
Inserito il - 05/01/2004 : 18:04:40
|
a parte il checkeof che non conosco come istruzione(è pascal standard?), la sintassi corretta per l' end of file dovrebbe essere:
while not eof(elenco)
|

|
Modificato da - Dreamhell in data |
 |
|
|
Spike
Utente medio
 

Città: Kakariko Prov.: Hyrule
|
Inserito il - 06/01/2004 : 16:33:33
|
checkeof serve ad abilitare l'eof, permette quindi di terminare la scrittura di un file premendo ctrl-z!
while not(eof) è giusta così perchè il ciclo aspetta che termina la lettura dal file standard INPUT! è come se stesse scritto while not(eof(input)) ma Input si può benissimo omettere!
quel while significa : mentre il file di input (che sarebbe ciò che si digita da tastiera) non termina ...allora esgui ecc ecc......!
Allora nessuno capisce dove è l'errore? |
.: Pace Amore Empatia .. Kurt :.
.: 2 + 2 = 5 :. |
 |
|
|
Dreamhell
Utente Cool
 

Città: o__O Bari O__o
|
Inserito il - 06/01/2004 : 18:44:01
|
grazie per avermi spiegato l'istruzione while. Dopo aver dato programmazione e linguaggi non l'avevo ancora capita... 
cmq la sintassi dell'eof fatta in quel modo (file di input standard???) non l'ho mai vista. non saprei come aiutarti ... |

|
Modificato da - Dreamhell in data |
 |
|
|
Spike
Utente medio
 

Città: Kakariko Prov.: Hyrule
|
Inserito il - 06/01/2004 : 19:07:54
|
Citazione: Messaggio inserito da Dreamhell
grazie per avermi spiegato l'istruzione while. Dopo aver dato programmazione e linguaggi non l'avevo ancora capita...
Scusa non avevo nessuna intenzione di spiegarti la while....figurati so benissimo che la conosci,ci mancherebbe!
cio che volevo sottolineare era il l'eof del file input (si si standard) all'interno della while!
input e autput sono in pascal dei file standard di input e output!
input prende da tastiera! output stampa a monitor!
quando in pascal fai una write(x)....è come se ci fosse write(output,x).
come quando scrivi un file tipizzato, in quel caso fai write(nomefile,x);
i file standard di output e input ci sono anche in c! hanno dei nomi diversi che ora non ricordo!
see you.... |
.: Pace Amore Empatia .. Kurt :.
.: 2 + 2 = 5 :. |
 |
|
|
Vaso
Utente giovane


|
Inserito il - 13/01/2004 : 18:41:15
|
Non so come funzioni quel comando Checkeof, ma non mi sembra funzionare. Scegli tu un terminatore, ad esempio la parola 'eof'
program prova; uses wincrt;
type name = string[30];
var elenco : text; elem,nome : name;
begin assign(elenco,'c:\nomi.txt'); rewrite(elenco); while (elem <> 'eof') do begin readln(elem); if (elem <> 'eof') then writeln(elenco,elem); end; close(elenco);
end. |
"E questa sera nel letto metterò, qualche coperta in più perché se no, se no avrò freddo senza averti sempre, senza averti sempre addosso..." VASCO ROSSI |
 |
|
|
Dreamhell
Utente Cool
 

Città: o__O Bari O__o
|
Inserito il - 13/01/2004 : 20:34:40
|
| CORRECT! |

|
 |
|
|
korakor
Nuovo Utente

|
Inserito il - 06/02/2004 : 23:01:13
|
X MNK
Oltre alla bontà, se hai qualche altra cosa da investire, pensa all'umiltà. |
 |
|
| |
Discussione  |
|