Secondo me tu non hai ancora ben chiara la differenza fra la compilazione e l'esecuzione.
Per poter creare un programma si passa attraverso 2 fasi: la compilazione del programma e la sua esecuzione.
La prima è indipendente dai dati su cui il programma andrà a lavorare (siano esse variabili lette da tastiera, file aperti in lettura/scrittura, altre risorse, ecc). Se il programma è sintatticamente (e semanticamente) corretto, la compilazione genererà un eseguibile.
Se, poi, il programma è anche corretto semanticamente e strutturalmente, l'eseguibile produrrà i dati risultanti.
Quello che oregon sta cercando di farti capire è che l'errore che ti viene mostrato non può (per un milione di ragioni, almeno) essere prodotto in fase di compilazione, ma solo in fase di esecuzione: il compilatore non sa nulla del tuo file di dati (non sa se esiste, se è leggibile, com'è strutturato e dove è posizionato), dunque lui produce un eseguibile che è in grado di aprire un file di dati qualunque. Quando, poi, tu eseguirai il programma, allora ci potranno essere diversi motivi per cui esso genererà quell'errore.
Molto probabilmente, l'ambiente di sviluppo che usi effettua le due cose in sequenza ed in automatico: compila ed esegue istantaneamente. Ciò non toglie che le due fasi siano ben distinte e del tutto scorrelate tra di loro.
Dunque, cercando di fare chiarezza, l'apertura di un file di dati è indipendente dal progetto che stai compilando. Se vuoi aprire l'eseguibile della calcolatrice di Windows, non è necessario averne il sorgente per incorporarlo nel proprio progetto... basta dirgli dov'è il file e come aprirlo. Lo stesso discorso vale per il tuo file di dati: se gli dici correttamente dove si trova, come aprirlo e come leggerlo, non ci saranno errori.
Se, invece, si presenta l'errore che hai postato, significa che il file "datix2.dat" non si trova, al momento della sua apertura, nella stessa directory del file eseguibile (ma tu, scrivendo il programma, presupponi che si trovi nulla stessa directory).
Ciao.![]()



Rispondi quotando