Newsgroup: it.comp.lang.delphi
Titolo: File create, ma non si apre!!!!!!!!!!!

Salve.
Potrebbe qualcuno gentilmente spiegarmi perchč
riesco a creare un gruppo di files nella directory specificata
con FileCreate
ma poi non posso aprirli ne dall'interno del mio eseguibile ne
andando direttamente nella dirextory, se prima non ho chiuso l'exe?
Window mi segnala che il file č impossibile aprirlo-verifica che
un disco si trovi........( se tento di aprirlo direttamente nella
Directory). Se tento d'aprirlo dall'esguibile, ottengo il
messaggio "can not open file C\.............". Eppure i files vengon
creati regolarmente.
Non ho speranza di fare diversamente?
Grazie.

 andando direttamente nella dirextory, se prima non ho chiuso l'exe?
Ciao, perchè il file rimane aperto. Come "leggi" il file? Devi utilizzare le
funzioni
api utilizzando l'handle che ti viene dato dalla FileCreate.
Se invece vuoi usare le routine pascal per lavorarci, puoi: o creare il file
con la filecreate
e poi chiuderlo oppure usare la funzione Rewrite di pascal.
Ciao! Davide DG

 andando direttamente nella dirextory, se prima non ho chiuso l'exe?
forse dopo aerli creati hai dimenticato di chiuderli ?

ricordati di chiudere il file alla fine......
--
Callegaro Luca
EMail        : Luca_D...@Libero.It
ICQ          : 15825215
Active List : 72728232   UT ITALY

api utilizzando l'handle che ti viene dato dalla FileCreate.
Potresti farmi un esempio, dall'help non
capisco bene.
Io creo facilmente il file con Filecreate('nome file preso dal
contenuto di una edit box'+'\'+.......). nessun problema fin qui.
Quando voglio chiuder lo stesso file non capisco cosa usare:
AssignFile(F,'nome file preso da........');
CloseFile(F);
mettendo 
var
  F:TextFile;
mi si compila, ma a run time mi da erroe I/o.
FileClose non mi si compila nemmeno.
Il file lo vorrei leggere aprendolo con L'open dialog, dopo la
creazione.
Grazie sinceramente per l'aiuto.

Stiamo parlando di text file?
Var
F :TextFile;
begin
assignfile(f, 'pippo.txt');
rewrite(f); // rewrite e' per scrivere oppure reset per leggere oppure
append per scrivere in append
//write(f,'ciao'); //puoi togliere il commento alla riga se ci vuoi scrivere
dentro qualcosa, altrimenti il file creato sara' vuoto
closefile(f); // chiudo il file in modo da poter essere accessibile
successivamente
end;
salut

Candice >>
Potrebbe qualcuno gentilmente spiegarmi perchè riesco a creare un gruppo
di files nella directory specificata con FileCreate ma poi non posso
aprirli ne dall'interno del mio eseguibile ne andando direttamente nella
dirextory, se prima non ho chiuso l'exe?
Window mi segnala che il file è impossibile aprirlo-verifica che un
disco si trovi........( se tento di aprirlo direttamente nella
Directory). Se tento d'aprirlo dall'esguibile, ottengo il messaggio "can
not open file C\.............". Eppure i files vengon creati
regolarmente.
Non ho speranza di fare diversamente?
<<
Come ti hanno già risposto in molti, FileCreate ti restituisce un
Handle, rappresentante una risorsa Win che andrebbe chiusa prima di
essere riaperta.
Bisognerebbe sapere poi se usi SysUtils.FileCreate o Windows.FileCreate;
nel primo caso trovi nell'help di D un esempio di FileCreate FileWrite
FileClose che puoi usare come paradigma.
Esistono molti modi da Delphi di scrivere su disco. Se si tratta di un
file di testo la soluzione migliore è probabilemente una TStringList o
un componente che ne contenga una (un TMemo ad es.); se vuoi salvare un
componente c'è il metodo WriteComponent dei discendenti di TStream (v.
esempio dall'help del metodo citato); Se vuoi salvare dei tuoi record
puoi usare le procedure Pascal AssignFile Reset Rewrite Append CloseFile
+ Read Write su una variabile di tipo File; oppure un TFileStream (v).
hth
Paolo Arosio

 creazione.
Ciao, allora... mi sembra che tu abbia un po' di confusione :)
O utilizzi le funzioni api di windows (che sfruttano gli handle) per gestire
i file, o usi
l'interfaccia messa a disposizione da delphi, quindi i tipi "File" e
"TextFile".
Nel primo caso, che è sconsigliato dalla Borland (ma che ovviamente puoi
sempre usare),
puoi utilizzare le funzioni api direttamente o tramite delle mini-interfacce
di delphi.
Nel secondo caso, che ti consiglio per fare prima esperienza, utilizzi le
funzioni e i tipi
di delphi.
Ti faccio un esempio con i TextFile (che mi sembra sia quello che ti serve)
:
Var F : TextFile;
Le funzioni da utilizzare sono :
AssignFile (F, 'nomefile'); // associa alla variabile f il file nomefile.
Reset (F); // Apre il file per la lettura.
Rewrite (F); // Sovrascrive il file e lo prepara alla scrittura.
CloseFile (F); // chiude il file (e i buffer allocati).
Append (F); // posiziona il puntatore del file alla fine di esso per
aggiungerci dati.
Read (F, x); // legge dal file F alla pos corrente nella var x
Write (F, x); // scrive la var x nel file alla pos corrente
Ok... per i file non di testo le cose sono un po' differenti... ma l'help
non manca di esempi.
Ora, tornando all'esempio, se tu vuoi creare un file e "lasciarlo lì", per
poterlo usare poi:
AssignFile (F, 'nomefile');
Rewrite (F);
CloseFile (F);
Così crei un file e lo chiudi.... il file esiste (è di lunghezza 0 byte).
** Quella che usavi tu è una funzione api di windows, la filecreate (o
createfile... la prima è
una mini-interfaccia di delphi per la seconda che è un po' + complicata).
In quel caso l'equivalente sarebbe stato :
FileClose ( FileCreate ( 'nomefile' ) ); // tieni conto che FileCreate
ritorna un handle al file *aperto*.
Ok.. se avessi altri dubbi o domande, riscrivi!! :)
Ciao! Davide DG

Ciao, allora... mi sembra che tu abbia un po' di confusione :)

Grazie per l'esauriente risposta.
Scusa la petulanza, ma potresti dirmi come
fare la stessa cosa con un file bitmap( o altri formati immagine, tipo
gif .....). Stesso tipo di problema.
var f:=??????????
AssignFile (F, 'nomefile');
Rewrite (F);
CloseFile (F);
Grazie di nuovo.

>
Scusa la petulanza, ma potresti dirmi come fare la stessa cosa con un
file bitmap( o altri formati immagine, tipo gif .....). Stesso tipo di
problema.
<<
Moltissime classi dell VCL supportano metodi di streaming, generalmente
con metodi dai nomi SaveToFile, LoadFromFile, SaveToStream,
LoadFromStream.
Alcuni di questi metodi sono virtuali e sono implementati diversamente
nei vari discendenti; è il caso di TGraphic, da cui eredita TBitmap.
hth
Paolo Arosio