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

Da Gambas-it.org - Wikipedia.
Riga 65: Riga 65:
  
  
==Scrivere un file di testo partendo da valori di di tipo byte==
+
==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.
 
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:
Riga 79: Riga 79:
 
     Write #fl, bb[j] As Byte
 
     Write #fl, bb[j] As Byte
 
   Next
 
   Next
 +
 +
  fl.Close
 +
 +
'''End'''
 +
 +
Se non si vuole utilizzare il ciclo, allora bisognerà servirsi del metodo ''.Write()'' della Classe ''Byte'' .
 +
<BR>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]
 +
 +
 +
  fl = Open "/tmp/nomefile" For Create
 +
 +
  bb.Write(fl, 0, bb.Count)
 
   
 
   
 
   fl.Close
 
   fl.Close
Riga 85: Riga 101:
  
  
oppure facendo 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(''valore_byte'')
  
Riga 105: Riga 121:
 
  '''End'''
 
  '''End'''
  
La conversione in dati di tipo ''Stringa'' potrà essere effettuata anche premettendo a ciascun valore, espresso però questa volta in ''esadecimale'', i caratteri <FONT color=B22222>\x</font> .
+
oppure passare come una stringa anche valori numerici, rappresentati però questa volta in ''esadecimale'', ai quali siano premessi i caratteri <FONT color=B22222>\x</font> .
 
<BR>Esempio pratico:
 
<BR>Esempio pratico:
 
  '''Public Sub Main()
 
  '''Public Sub Main()
Riga 120: Riga 136:
 
   
 
   
 
  '''End'''
 
  '''End'''
 
 
  
  

Versione delle 19:52, 12 nov 2013

In questa pagina distingueremo fra scrivere un file di testo ex novo e scrivere dati di testo all'interno di un file di testo già esistente.

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 potrà utilizzare sia la funzione .Save() della Classe File, sia le istruzioni Write e Print.


Uso della funzione .Save() della Classe File

In Gambas la modalità più semplice per scrivere un file a rappresentazione stringa, ossia un file di testo, è l'uso della funzione .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 "/tmp/nomefile" 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 "/tmp/nomefile" 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 bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105]


  fl = Open "/tmp/nomefile" For Create

  For j = 0 To bb.Max
    Write #fl, bb[j] As Byte
  Next

  fl.Close

End

Se non si vuole utilizzare il ciclo, allora bisognerà servirsi del metodo .Write() della Classe 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]


  fl = Open "/tmp/nomefile" For Create

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

  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 bb As Byte[] = [84, 101, 115, 116, 111, 32, 113, 117, 97, 108, 115, 105, 97, 115, 105]


  fl = Open "/tmp/nomefile" For Create

  For j = 0 To bb.Max
    Write #fl, Chr(bb[j])
  Next

  fl.Close

End

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

Public Sub Main()

 Dim fl As File
 Dim s As String = "\x54\x65\x73\x74\x6F\x20\x71\x75\x61\x6C\x73\x69\x61\x73\x69"


  fl = Open "/tmp/nomefile" For Create

  Write #fl, s
 
  fl.Close

End



Pagina in costruzione!