Gambas-it

Gambas3 => Programmazione => Topic aperto da: Michy9393 - 11 Novembre 2013, 15:53:27

Titolo: Come scrivere su file .txt
Inserito da: Michy9393 - 11 Novembre 2013, 15:53:27
Salve a tutti,
dopo tanto tempo eccomi con una nuova domanda...Come faccio a scrivere su un file .txt con Gambas?  ;D
Titolo: Re: Come scrivere su file .txt
Inserito da: vuott - 11 Novembre 2013, 16:15:54
Come faccio a scrivere su un file .txt con Gambas?

Se legge questa tua domanda Ceskho ti spedisce agli Inferi nel Girone di Coloro che mai fecero Ricerca!  ;D

E' una questione molto affrontata, sia direttamente che indirettamente:

http://www.gambas-it.org/smf/index.php?topic=1652.0
http://www.gambas-it.org/smf/index.php?topic=96.0
http://www.gambas-it.org/smf/index.php?topic=1580.0
http://www.gambas-it.org/smf/index.php?topic=198.0
http://www.gambas-it.org/smf/index.php?topic=2683.0
http://www.gambas-it.org/smf/index.php?topic=2149.0
http://www.gambas-it.org/smf/index.php?topic=1197.0
http://www.gambas-it.org/smf/index.php?topic=614.0
http://www.gambas-it.org/smf/index.php?topic=1208.0
http://www.gambas-it.org/smf/index.php?topic=457.0
http://www.gambas-it.org/smf/index.php?topic=646.0
Titolo: Re: Come scrivere su file .txt
Inserito da: Top Fuel - 12 Novembre 2013, 00:13:17
No, gli attacca direttamente la ceskhonite senza passare dal via. ;D
Scherzi a parte, c'è un esempio del wiki che non ho capito bene:

Codice: [Seleziona]
While Not Eof(fl)
   Read #fl, s$, -256
' Mostra il contenuto della variabile s$ in una "TextArea":
   TextArea1.Text = TextArea1.Text & s$ & "\n"
  Wend

Quel -256 che significa?
Titolo: Re: Come scrivere su file .txt
Inserito da: Michy9393 - 12 Novembre 2013, 08:09:02
Grazie!
Eppure ho cercato con il cerca nel forum  :-\
Titolo: Re: Come scrivere su file .txt
Inserito da: splugenbrau - 12 Novembre 2013, 09:20:10
Buon giorno Michy9393, Top Fuel, vuott,

Citazione
Read #fl, s$, -256

#fl    -> il file.
s$     -> la stringa
-256  -> il numero di caratteri da leggere dall'inizio della stringa

solamente che, quando il numero è negativo non dovrebbe copiare proprio nulla!
ho visto il link: http://gambasdoc.org/help/lang/write
ciao.
Titolo: Re: Come scrivere su file .txt
Inserito da: vuott - 12 Novembre 2013, 12:46:53
solamente che, quando il numero è negativo non dovrebbe copiare proprio nulla!
ho visto il link: http://gambasdoc.org/help/lang/write

Ciao,
...però lì si parla di Write in Gambas 2. Tra l'altro con Gambas 3 la specificazione di un numero negativo, come terzo elemento della sintassi di Write nella scrittura di una stringa, non inficia la scrittura dell'intera stringa.

   https://gambaswiki.org/wiki/lang/write

Per quel che riguarda Read, invece, circa la specificazione in Gambas 3 di un numero negativo nel terzo elemento sintattico (numero di byte di legge per volta) la documentazione ufficiale dice:
" If Length is negative, then at most (- Length) bytes are read until the end of the stream. "

   https://gambaswiki.org/wiki/lang/read

In sostanza, verrà letta una quantità di byte per volta, indicata dal valore -n in 8bit, comunque di fatto non eccedente la fine del file, evitando così l'errore "End of file".
La combinazione di quel valore negativo con il ciclo While...Wend consente di leggere l'intero file senza provocare quell'errore di fine file.
Titolo: Re: Come scrivere su file .txt
Inserito da: splugenbrau - 12 Novembre 2013, 14:59:27
Chiedo venia :-\
ho fatto la ricerca per WRITE anzichè per READ,
e per di più m'è apparsa la pagina della versione 2.0
Titolo: Re: Come scrivere su file .txt
Inserito da: baldi96 - 18 Novembre 2013, 18:28:50
Ciao a tutti...
Io per scrivere su un file di testo uso il metodo File.Save(filepath,data) e file.load(filepath) per leggerelo.
combinando i due metodi posso aggiungere una stringa a un file gia esistente: file.save(filepath, file.load(filepath) & "\n" & data)
Titolo: Re: Come scrivere su file .txt
Inserito da: pastrank - 18 Novembre 2013, 23:21:31
Come faccio a scrivere su un file .txt con Gambas?  ;D

Io ero per proporre una cosa come questa, ovviamente con i dovuti controlli d'errore (se invece che sub fai una function e ritorni un valore a seconda che ci siano stati errori o meno, puoi gestirti ancora meglio)... ci sono svantaggi e vantaggi nell'usare una routine magari anche complessa per scrivere i file: ovvero, i primi possono essere un rallentamento, nel caso di uso di molti file (e per molti da potersene accorgere non intendo cento, ma almeno un paio di ordini di grandezza in piu'), mentre i secondi sono una sicurezza e una semplificazione, visto che ti risparmi di fare check ad ogni salvataggio.

Codice: [Seleziona]
Public Sub ScriviFile(nomefile As String, testo As String, aggiungi As Boolean)
Dim f As Stream
 
    If aggiungi = False Then
        If Exist(nomefile) = True Then
          Try Kill nomefile
        Endif
        f = Open nomefile For Create
    Else
        If Exist(nomefile) = True Then
             f = Open nomefile For Append
        Else
          f = Open nomefile For Create
        Endif
    Endif

        Print #f, testo
    Close #f
End