Differenze tra le versioni di "Scrivere un file di testo"

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 10: Riga 10:
 
===Uso del Metodo ".Save()" della Classe ''File''===
 
===Uso del Metodo ".Save()" della Classe ''File''===
 
In Gambas la modalità più semplice per scrivere un file ''a rappresentazione stringa'', ossia un file di testo, è l'uso del Metodo "'.Save()" della Classe ''File'':
 
In Gambas la modalità più semplice per scrivere un file ''a rappresentazione stringa'', ossia un file di testo, è l'uso del Metodo "'.Save()" della Classe ''File'':
  File.Save("<FONT color=gray>''/percorso/del/file/di/testo/da/salvare''</font>", "''dati stringa da salvare''")
+
  File.Save("<FONT color=darkgreen>''/percorso/del/file/di/testo/da/salvare''</font>", "''dati stringa da salvare''")
 
Nel primo argomento verrà indicato il percorso ed il nome del nuovo file di testo che si viene a creare. Il secondo argomento, invece, contiene i dati da salvare e che costituiranno il file di testo. Tali dati sono, ovviamente, dati di tipo stringa, ossia normali caratteri.
 
Nel primo argomento verrà indicato il percorso ed il nome del nuovo file di testo che si viene a creare. Il secondo argomento, invece, contiene i dati da salvare e che costituiranno il file di testo. Tali dati sono, ovviamente, dati di tipo stringa, ossia normali caratteri.
 
<BR>Esempio:
 
<BR>Esempio:
  '''Public Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim s As String = "Testo qualsiasi"
 
   Dim s As String = "Testo qualsiasi"
Riga 21: Riga 21:
 
   File.Save("/tmp/nomefile2" , s)
 
   File.Save("/tmp/nomefile2" , s)
 
   
 
   
  '''End'''
+
  End
  
  
 
===Uso dell'istruzione ''Write''===
 
===Uso dell'istruzione ''Write''===
Usando la funzione ''[[Write|Write]]'' in Gambas 3, sarà sufficiente specificare come suo secondo parametro il testo da scrivere nel file:
+
Usando la funzione ''[[Write]]'' in Gambas 3, sarà sufficiente specificare come suo secondo parametro il testo da scrivere nel file:
 
  Write #flusso, "Testo qualsiasi"
 
  Write #flusso, "Testo qualsiasi"
  
 
Esempio pratico:
 
Esempio pratico:
  '''Public Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
 
   Dim s As String = "Testo qualsiasi"
 
   Dim s As String = "Testo qualsiasi"
 
   
 
   
   fl = Open "<FONT color=gray>''/percorso/del/file/di/testo''</font>" For Create
+
   fl = Open "<FONT color=darkgreen>''/percorso/del/file/di/testo''</font>" For Create
 
   
 
   
 
   Write #fl, s
 
   Write #fl, s
Riga 40: Riga 40:
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End
  
  
Riga 49: Riga 49:
  
 
Esempio pratico:
 
Esempio pratico:
  '''Public Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
 
   Dim s As String = "Testo qualsiasi"
 
   Dim s As String = "Testo qualsiasi"
 
   
 
   
   fl = Open "<FONT color=gray>''/percorso/del/file/di/testo''</font>" For Create
+
   fl = Open "<FONT color=darkgreen>''/percorso/del/file/di/testo''</font>" For Create
 
   
 
   
 
   Print #fl, s
 
   Print #fl, s
Riga 60: Riga 60:
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End
  
  
Riga 66: Riga 66:
 
Nei casi precedenti abbiamo creato nuovi file di testo usando direttamente dati ''a rappresentazione stringa'', ossia normali caratteri di testo. In quest'altro caso, invece, si utilizzeranno dati numerici di tipo ''Byte'' (8bit) per generare un file di testo. Ovviamente bisognerà far scrivere nel file di testo dati, il cui valore numerico corrisponda ad un carattere secondo la codifica ASCII.
 
Nei casi precedenti abbiamo creato nuovi file di testo usando direttamente dati ''a rappresentazione stringa'', ossia normali caratteri di testo. In quest'altro caso, invece, si utilizzeranno dati numerici di tipo ''Byte'' (8bit) per generare un file di testo. Ovviamente bisognerà far scrivere nel file di testo dati, il cui valore numerico corrisponda ad un carattere secondo la codifica ASCII.
 
<BR>Esempio:
 
<BR>Esempio:
  '''Public Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
Riga 72: Riga 72:
 
   Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]
 
   Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]
 
   
 
   
   fl = Open "<FONT color=gray>''/percorso/del/file/di/testo''</font>" For Create
+
   fl = Open "<FONT color=darkgreen>''/percorso/del/file/di/testo''</font>" For Create
 
   
 
   
 
   For b = 0 To bb.Max
 
   For b = 0 To bb.Max
Riga 81: Riga 81:
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End
 
Se non si vuole utilizzare il ciclo, allora bisognerà servirsi del Metodo ".Write()" del vettore di tipo "Byte[]".
 
Se non si vuole utilizzare il ciclo, allora bisognerà servirsi del Metodo ".Write()" del vettore di tipo "Byte[]".
 
<BR>Esempio pratico:
 
<BR>Esempio pratico:
  '''Public Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
 
   Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]
 
   Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]
 
   
 
   
   fl = Open "<FONT color=gray>''/percorso/del/file/di/testo''</font>" For Create
+
   fl = Open "<FONT color=darkgreen>''/percorso/del/file/di/testo''</font>" For Create
 
   
 
   
 
   bb.Write(fl, 0, bb.Count)
 
   bb.Write(fl, 0, bb.Count)
Riga 95: Riga 95:
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End
 
oppure usare anche il Metodo ".ToString()" del vettore:
 
oppure usare anche il Metodo ".ToString()" del vettore:
  '''Public Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
 
   Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]
 
   Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]
 
   
 
   
   fl = Open "<FONT color=gray>''/percorso/del/file/di/testo''</font>" For Create
+
   fl = Open "<FONT color=darkgreen>''/percorso/del/file/di/testo''</font>" For Create
 
   
 
   
 
   Write #fl, bb.ToString()
 
   Write #fl, bb.ToString()
Riga 108: Riga 108:
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End
 
Inoltre, si possono far scrivere nel file di testo valori di tipo stringa convertendo, però, <SPAN style="text-decoration:underline">preliminarmente</span> ciascun dato di tipo ''Byte'' nel corrispondente carattere ASCII mediante la funzione "Chr()":
 
Inoltre, si possono far scrivere nel file di testo valori di tipo stringa convertendo, però, <SPAN style="text-decoration:underline">preliminarmente</span> ciascun dato di tipo ''Byte'' nel corrispondente carattere ASCII mediante la funzione "Chr()":
  Write #flusso, chr(''valore_byte'')
+
  Write #flusso, chr(<FONT color=gray>''valore_byte''</font>)
  
 
Esempio pratico:
 
Esempio pratico:
  '''Public Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
Riga 119: Riga 119:
 
   Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]
 
   Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]
 
   
 
   
   fl = Open "<FONT color=gray>''/percorso/del/file/di/testo''</font>"
+
   fl = Open "<FONT color=darkgreen>''/percorso/del/file/di/testo''</font>"
 
   
 
   
 
   Write #fl, Chr(84) & Chr(101) & Chr(115) & Chr(116) & Chr(111) & Chr(32) & Chr(113) & Chr(117) &
 
   Write #fl, Chr(84) & Chr(101) & Chr(115) & Chr(116) & Chr(111) & Chr(32) & Chr(113) & Chr(117) &
Riga 126: Riga 126:
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End
 
oppure passare come una stringa anche valori numerici, rappresentati però questa volta in ''esadecimale'', ai quali siano premessi il caratter escpae <FONT color=B22222>\x</font> .
 
oppure passare come una stringa anche valori numerici, rappresentati però questa volta in ''esadecimale'', ai quali siano premessi il caratter escpae <FONT color=B22222>\x</font> .
 
<BR>Esempio pratico:
 
<BR>Esempio pratico:
  '''Public Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
  Dim s As String = "\x54\x65\x73\x74\x6F\x20\x71\x75\x61\x6C\x73\x69\x61\x73\x69\x0A"
 
 
   
 
   
   fl = Open "<FONT color=gray>''/percorso/del/file/di/testo''</font>"
+
   fl = Open "<FONT color=darkgreen>''/percorso/del/file/di/testo''</font>"
 +
 +
  Write #fl, "\x54\x65\x73\x74\x6F\x20\x71\x75\x61\x6C\x73\x69\x61\x73\x69\x0A"
 
   
 
   
  Write #fl, s
 
 
 
 
   fl.Close
 
   fl.Close
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 16:46, 24 giu 2024

In questa pagina mostreremo alcune modalità per scrivere un file di testo ex novo.

Un file di testo è un file , comprensibile alla lettura a vista dell'utente, contenente caratteri stampabili e/o anche alcuni caratteri non stampabili (ritorno a capo, tabulazione, etc). La codifica più comune dei file di testo è la corrispondenza fra numero e carattere data dal codice ASCII.


Scrivere un file di testo

Per scrivere un file di testo ex novo si potranno utilizzare il Metodo ".Save()" della Classe File, nonché le istruzioni Write e Print.


Uso del Metodo ".Save()" della Classe File

In Gambas la modalità più semplice per scrivere un file a rappresentazione stringa, ossia un file di testo, è l'uso del Metodo "'.Save()" della Classe File:

File.Save("/percorso/del/file/di/testo/da/salvare", "dati stringa da salvare")

Nel primo argomento verrà indicato il percorso ed il nome del nuovo file di testo che si viene a creare. Il secondo argomento, invece, contiene i dati da salvare e che costituiranno il file di testo. Tali dati sono, ovviamente, dati di tipo stringa, ossia normali caratteri.
Esempio:

Public Sub Main()

 Dim s As String = "Testo qualsiasi"

 File.Save("/tmp/nomefile1", "testo qualsiasi")

 File.Save("/tmp/nomefile2" , s)

End


Uso dell'istruzione Write

Usando la funzione Write in Gambas 3, sarà sufficiente specificare come suo secondo parametro il testo da scrivere nel file:

Write #flusso, "Testo qualsiasi"

Esempio pratico:

Public Sub Main()

 Dim fl As File
 Dim s As String = "Testo qualsiasi"

 fl = Open "/percorso/del/file/di/testo" For Create

 Write #fl, s

 fl.Close

End


Uso dell'istruzione Print

Analogamente si potrà scrivere un file di testo con la funzione Print:

Print #flusso, "Testo qualsiasi"

Da tenere conto che con tale modalità verrà aggiunto automaticamente alla fine del file il carattere non stampabile: x0A (nuova riga a capo).

Esempio pratico:

Public Sub Main()

 Dim fl As File
 Dim s As String = "Testo qualsiasi"

 fl = Open "/percorso/del/file/di/testo" For Create

 Print #fl, s

 fl.Close

End


Scrivere un file di testo partendo da valori di tipo byte

Nei casi precedenti abbiamo creato nuovi file di testo usando direttamente dati a rappresentazione stringa, ossia normali caratteri di testo. In quest'altro caso, invece, si utilizzeranno dati numerici di tipo Byte (8bit) per generare un file di testo. Ovviamente bisognerà far scrivere nel file di testo dati, il cui valore numerico corrisponda ad un carattere secondo la codifica ASCII.
Esempio:

Public Sub Main()

 Dim fl As File
 Dim b As Byte
 Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]

 fl = Open "/percorso/del/file/di/testo" For Create

 For b = 0 To bb.Max
' In questo caso si deve specificare anche il "tipo" di valore che viene scritto:
   Write #fl, bb[b] As Byte
 Next

 fl.Close

End

Se non si vuole utilizzare il ciclo, allora bisognerà servirsi del Metodo ".Write()" del vettore di tipo "Byte[]".
Esempio pratico:

Public Sub Main()

 Dim fl As File
 Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]

 fl = Open "/percorso/del/file/di/testo" For Create

 bb.Write(fl, 0, bb.Count)

 fl.Close

End

oppure usare anche il Metodo ".ToString()" del vettore:

Public Sub Main()

 Dim fl As File
 Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]

 fl = Open "/percorso/del/file/di/testo" For Create

 Write #fl, bb.ToString()

 fl.Close

End

Inoltre, si possono far scrivere nel file di testo valori di tipo stringa convertendo, però, preliminarmente ciascun dato di tipo Byte nel corrispondente carattere ASCII mediante la funzione "Chr()":

Write #flusso, chr(valore_byte)

Esempio pratico:

Public Sub Main()

 Dim fl As File
 Dim b As Byte
 Dim bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105, 10]

 fl = Open "/percorso/del/file/di/testo"

 Write #fl, Chr(84) & Chr(101) & Chr(115) & Chr(116) & Chr(111) & Chr(32) & Chr(113) & Chr(117) &
            Chr(97), Chr(108) & Chr(115) & Chr(105) & Chr(97) & Chr(115) & Chr(105) &Chr(10)

 fl.Close

End

oppure passare come una stringa anche valori numerici, rappresentati però questa volta in esadecimale, ai quali siano premessi il caratter escpae \x .
Esempio pratico:

Public Sub Main()

 Dim fl As File

 fl = Open "/percorso/del/file/di/testo"

 Write #fl, "\x54\x65\x73\x74\x6F\x20\x71\x75\x61\x6C\x73\x69\x61\x73\x69\x0A"

 fl.Close

End