Autore Topic: files di testo  (Letto 2825 volte)

g.paolo

  • Visitatore
files di testo
« il: 16 Marzo 2008, 15:23:04 »
Mentre trovo esempi di come si legge un file di testo, non trovo in giro codice di come ci si possa scrivere. Ho provato ad esempio il codice seguente che si propone di scrivere 10 righe di prova con lo stesso testo, ma non funziona e non trovo informazioni che mi aiutino

Codice: [Seleziona]
PUBLIC SUB scrittura_txt()     
 DIM hFile AS Stream
 DIM conta AS Integer
 hFile = OPEN "testo.txt" FOR WRITE                     '
 FOR conta = 0 TO 10
    PRINT #hFile, "FFFFFF"
 NEXT
 CLOSE #hFile
CATCH
  message.Info("Impossibile aprire il file")
  TRY CLOSE #hFile
END


Mi sapete correggere l'errore? Grazie.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: files di testo
« Risposta #1 il: 16 Marzo 2008, 17:52:10 »
Ciao. Devi correggere così:

hFile = OPEN user.home &/ "testo.txt" FOR WRITE CREATE

1) devi fornire il percorso completo del file, per esempio: user.home &/ "testo.txt"

2) se il file non esiste ancora, devi usare la keyword CREATE.
***ATTENZIONE***: se il file esiste già "CREATE" ne cancellerà
il contenuto prima di scriverci. Usa APPEND nel caso tu voglia
aggiungere contenuti.

Ciao.

g.paolo

  • Visitatore
Re: files di testo
« Risposta #2 il: 16 Marzo 2008, 17:54:53 »
Grazie Giulio, a quanto pare era proprio una sciocchezza, ma quando le cose non si sanno.....!

  • Visitatore
Re: files di testo
« Risposta #3 il: 16 Marzo 2008, 18:38:23 »
potresti usare anche la propietà Dialog.ti darà il percorso per poter aprire e/o salvare un file.esempio per aprire :
Codice: [Seleziona]

PUBLIC FileAbre AS File

PUBLIC SUB _new()
''''''''''''''''''
END

PUBLIC SUB Form_Open()
ME.Center
END

PUBLIC SUB Button1_Click()
DIM Linea AS String
TextArea1.Text = NULL
Dialog.Path = "/home"
IF Dialog.SaveFile() THEN RETURN
OPEN (Dialog.Path) FOR READ AS #FileAbre
WHILE NOT Eof(FileAbre)
 LINE INPUT #FileAbre, Linea
 TextArea1.Text &= Linea & "\n"
WEND
CLOSE #FileAbre
CATCH
 Message.Info(Error.Text)
END

g.paolo

  • Visitatore
Re: files di testo
« Risposta #4 il: 16 Marzo 2008, 18:49:33 »
@ alejandro
Il tuo intervento è un piacere, così mi faccio un po di esperienza!
Peccato che il tuo codice non sia di così immediata comprensione
per la mia modestissima preparazione.
Il concetto di "dialog" non l'ho ancora affrontato perchè fino ad ora mi
sono sempre arrangiato in altro modo.
Ma quando ne capirò le peculiarità senza dubbio inizierò ad usarlo!

  • Visitatore
Re: files di testo
« Risposta #5 il: 17 Marzo 2008, 15:49:35 »
niente di ostico,lo usavo già con vb5(vecchio,vero??).nient'altro che la finestra di dialogo commondialog.
Codice: [Seleziona]

PUBLIC FileAbre AS File '<--- dichiara la variabile come class File per leggere un file


Codice: [Seleziona]

PUBLIC SUB Button1_Click()
DIM Linea AS String '<--- dichiaro la variabile che farà di vettore
TextArea1.Text = NULL '<- cancello tutto quello che si trova nel controllo di testo
Dialog.Path = "/home" '<-- dico alla propietà .Path di posizionarsi su /home
IF Dialog.OpenFile() THEN RETURN '<--- se clicco anulla,esco senza danni
OPEN (Dialog.Path) FOR READ AS #FileAbre '<---- apro il file del percorso in lettura
WHILE NOT Eof(FileAbre) '<-- loop finché non trovo la fine del file
 LINE INPUT #FileAbre, Linea '<-- il vettore prende l'informazione del rigo
 TextArea1.Text &= Linea & "n" '<-- aggiungo al controllo testo l'informazione e vado a capo
WEND '<-- al prossimo,se c'è......
CLOSE #FileAbre '<--- chiudo il file
CATCH '<--- se c'è un errore
 Message.Info(Error.Text) '<--- me lo dice lui
END

g.paolo

  • Visitatore
Re: files di testo
« Risposta #6 il: 17 Marzo 2008, 18:48:17 »
Grazie alejandro per la tua spiegazione riga per riga!
Ora ho capito, e lo proverò senza dubbio.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: files di testo
« Risposta #7 il: 17 Marzo 2008, 21:06:01 »
io spesso per salvare una stringa di configurazione in un file uso questo sistema:
Codice: [Seleziona]
 DIM stringa AS String
 
  DIM hfile AS File
  DIM nome AS String
 
  nome = user.Home & "/testo.txt"
 
    OPEN nome FOR READ CREATE AS #hfile
                     
    CLOSE #hFile
               
               
               
   stringa ="pippo"
               
  file.Save(nome, stringa)  


lo uso solo per salvare una riga solitamente contenente un array che utilizzo per
le configurazioni

g.paolo

  • Visitatore
Re: files di testo
« Risposta #8 il: 17 Marzo 2008, 21:48:21 »
Ci son alcune cose che non capisco nel tuo esempio.
1) perchè apri e chiudi lo stesso file senza scriverci nulla
2) cosa fa la funzione:
Codice: [Seleziona]
file.Save(nome, stringa)

che mi sembra di capire, salva un file di nome
Codice: [Seleziona]
user.Home & "/testo.txt" 

ma a cosa serva il secondo membro
questo mi sfugge!

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: files di testo
« Risposta #9 il: 17 Marzo 2008, 21:53:11 »
praticamente in stringa viene contenuto il testo da scrivere nel file .

questo sistema è anche comodissimo per salvare in un file il testo di una text area o di un componente editor in solo colpo!

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: files di testo
« Risposta #10 il: 17 Marzo 2008, 21:58:07 »
Codice: [Seleziona]
    OPEN nome FOR READ CREATE AS #hfile
                     
    CLOSE #hFile



con questo creo il file , se già esistente lo sovrascrivo

questo esempio è solo un modo diverso di scrivere in file da quelli proposti dagli altri utenti.
Per me in alcune accasioni è molto più comodo.

puoi provare a vedere che succede dopo aver creato il file a dare 2 istruzioni di file.save per vedere se il testo viene sovrascritto o aggiunto!

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: files di testo
« Risposta #11 il: 17 Marzo 2008, 23:54:49 »
te lo dico io ..così risparmi tempo... il testo viene sostituito

g.paolo

  • Visitatore
Re: files di testo
« Risposta #12 il: 18 Marzo 2008, 09:20:35 »
Molto bene! Ora è tutto chiaro, grazie.

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: files di testo
« Risposta #13 il: 18 Marzo 2008, 11:14:42 »
Citazione

fsurfing ha scritto:
io spesso per salvare una stringa di configurazione in un file uso questo sistema:
Codice: [Seleziona]
 DIM stringa AS String
 
  DIM hfile AS File
  DIM nome AS String
 
  nome = user.Home & "/testo.txt"
 
    OPEN nome FOR READ CREATE AS #hfile
                     
    CLOSE #hFile
               
               
               
   stringa ="pippo"
               
  file.Save(nome, stringa)  


lo uso solo per salvare una riga solitamente contenente un array che utilizzo per
le configurazioni


Ciao fsurfing.

Se usi file.Save(), il passaggio OPEN... CLOSE... è superfluo e inutile. Ci pensa file.Save() a creare il file.

Ciao.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: files di testo
« Risposta #14 il: 18 Marzo 2008, 13:38:45 »
questo non l' avevo provato! :-o nei programmi in cui l'ho trovato c'era anche la riga OPEN...
bisogna dire che un sito come questo è molto utile ..si impara qualcosa ogni giorno!!!!