Gambas-it

Gambas3 => Programmazione => Topic aperto da: naderit - 07 Ottobre 2018, 19:01:54

Titolo: [RISOLTO]file di testo codice viisualizzato
Inserito da: naderit - 07 Ottobre 2018, 19:01:54
Ciao a tutti. Devo scrivere in un file di testo righe della lunghezza di 1800 caratteri con il metodo Write
Codice: [Seleziona]
Public Sub export_txt()
 Dim txtfile As Stream
  txtfile = Open mydir & "/" & "S001" & Label62.Text & trimestre & progres & ".TXT" For Create
  Write #txtfile, "0" & "MIS00" & "26" & label27.Text & Space(16 - Len(label27.Text)) & label28.Text & xlab & label32.Text & Space(30 - Len(label32.Text)) & label8.Text & Space(60 - Len(label8.Text)) & label29.Text & Space(40 - Len(label29.Text)) etc, etc
  Close #txtfile
 
End

e qui tutto bene. La mia esigenza e di poter scrivere il codice visualizzato su più righe per esempio:
Codice: [Seleziona]
Public Sub export_txt()
 Dim txtfile As Stream
  txtfile = Open mydir & "/" & "S001" & Label62.Text & trimestre & progres & ".TXT" For Create
  Write #txtfile, "0" & "MIS00" & "26" & label27.Text & Space(16 - Len(label27.Text)) &
& label28.Text &
& xlab &
& label32.Text & Space(30 - Len(label32.Text)) &
& label8.Text & Space(60 - Len(label8.Text)) &
& label29.Text & Space(40 - Len(label29.Text)) etc. etc.
 Close #txtfile
 
End

in modo da poter essere più leggibile che su un'unica riga.
ho provato le parentesi, gli apici, le virgolette, ma non ho trovato soluzione, qualcuno mi può aiutare?
Grazie.
Titolo: Re:file di testo codice viisualizzato
Inserito da: kicco - 07 Ottobre 2018, 20:43:13
 :ciao:
Scusa , forse non ho capito cosa vuoi fare ma usando print (perchè mi è più facile) se scrivo
Codice: [Seleziona]
print "biscotto" & "caciocavallo" &
"polistirolo" & "asino"
mi stampa:biscottocaciocavallopolistiroloasino
Questo se ho capito bene !
 :ciao: :ciao:
Titolo: Re:file di testo codice viisualizzato
Inserito da: Top Fuel - 07 Ottobre 2018, 21:32:01
Magari dico una vaccata, ma creare una classe in cui metti tutti i testi delle Label e salvare le proprietà una per una non sarebbe più semplice e leggibile?
Titolo: Re:file di testo codice viisualizzato
Inserito da: Gianluigi - 07 Ottobre 2018, 22:42:39
La mia esigenza e di poter scrivere il codice visualizzato su più righe...

Tool > Preferenze > Projects > Automatic word wrap by default e riavvii il progetto

Dimenticavo: in alternativa c'è sempre il vecchio metodo:

Codice: [Seleziona]
  sMyString = "Un"
  sMyString &= " due"
  sMyString &= " tre,"
  sMyString &= " ecc."
Titolo: Re:file di testo codice viisualizzato
Inserito da: vuott - 08 Ottobre 2018, 13:58:01
Io ho una curiosità da domandare: perché utilizzi una variabile di tipo Stream ?
Titolo: Re:file di testo codice viisualizzato
Inserito da: naderit - 08 Ottobre 2018, 19:42:52
ciao  :) grazie Gianluigi era ciò che cercavo nel metodo di spezzare l'istruzione. Non so se esistono altri metodi ma in questo modo risolvo egregiamente in modo pulito e chiaro.
Citazione
Io ho una curiosità da domandare: perché utilizzi una variabile di tipo Stream ?
ho sempre usato le funzioni di Stream e input/output per gestire i file mi sono trovato sempre bene, ma accetto volentieri altre dritte.
grazie  :ciao:     
Titolo: Re:file di testo codice viisualizzato
Inserito da: vuott - 08 Ottobre 2018, 20:49:23
Ma perché non usi il tipo File ?
Titolo: Re:file di testo codice viisualizzato
Inserito da: naderit - 08 Ottobre 2018, 21:39:26
Citazione
Ma perché non usi il tipo File ?
ho provato ora la classe, le istruzioni sono simili a Stream (open, write, print, ecc ) se mi dici che questa è migliore ne faccio tesoro. 
Titolo: Re:file di testo codice viisualizzato
Inserito da: vuott - 08 Ottobre 2018, 23:14:55
Non si tratta di essere "migliore"; è che solitamente nella gestione in lettura e scrittura di flussi di dati viene usato il tipo "File", anche se gli effetti sono identici, essendo la Classe Stream "genitore" in fondo pure della Classe File.

La variabile dell'Oggetto "Stream" va invece senz'altro utilizzata con i Memory Stream (http://gambaswiki.org/wiki/lang/memory) per gestire un flusso di dati in aree di memoria volatile riservate dal'utente e identificate da una variabile nativa di tipo Puntatore.
Titolo: Re:file di testo codice viisualizzato
Inserito da: naderit - 09 Ottobre 2018, 13:49:56
Grazie Vuott nel frattempo mi sono documentato. Per il resto metto risolto.  :ciao: 
Titolo: Re:[RISOLTO]file di testo codice viisualizzato
Inserito da: vuott - 09 Ottobre 2018, 16:22:36
Un'altra modalità è quella di suddividere la frase in tante parti, ciascuna delle quali sarà scritta nel file finale con una funzione Write.
Quindi usare una funzione Write per ciascuna parte della frase.

Esempio:
Codice: [Seleziona]
Write #variabile, "prima parte della frase"
Write #variabile, "seconda parte della frase"
Write #variabile, "terza parte della frase"
e così via.
Titolo: Re:[RISOLTO]file di testo codice viisualizzato
Inserito da: vuott - 13 Ottobre 2018, 21:12:16
Se non è necessaria la funzione "Open", si può considerare un'altra modalità: l'uso del Metodo ".Save( )" della Classe "File".
All'interno del predetto Metodo si inserirebbe il Metodo ".Join" dell'Oggetto array di tipo String, per concatenare il contenuto dei vari elementi, ciascuno dei quali parte dell'unico testo da scrivere.
Titolo: Re:[RISOLTO]file di testo codice viisualizzato
Inserito da: naderit - 15 Ottobre 2018, 19:41:02
Ciao ho trovato qualcosa
https://en.wikibooks.org/wiki/Gambas/String_Manipulation
ma non spiega l'uso del metodo .Join. Puoi fare qualche esempio? Grazie  :ciao:
Titolo: Re:[RISOLTO]file di testo codice viisualizzato
Inserito da: vuott - 15 Ottobre 2018, 20:17:27
----http://gambaswiki.org/wiki/comp/gb/string[]/join

Eccone qua uno semplice.
Il file di testo sarà salvato nella cartella "/tmp".

Codice: [Seleziona]
Public Sub Main()

  Dim ss As String[] = ["vuott ", "ha estremo ", "bisogno di una ", "macchina del tempo"]     ' array di tipo String con 4 elementi

  File.Save("/tmp/join", ss.Join(Null, Null))
 
End
Titolo: Re:[RISOLTO]file di testo codice viisualizzato
Inserito da: naderit - 18 Ottobre 2018, 19:30:43
faccio delle prove, mi pare interessante. Grazie  :ciao: