Autore Topic: Scrivere in un file???(RISOLTO)  (Letto 1745 volte)

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Scrivere in un file???(RISOLTO)
« il: 16 Luglio 2009, 20:40:29 »
Ciao a tutti, leggendo la documentazione di gambas, stavo provando a scrivere dentro un file delle righe di testo che recupero da un altro file.
Il problema è che una volta scritto il file, aprendolo trovo le righe scritte su di una singola riga e separate da uno spazio.

Riporto il contenuto del file.
eesseesseesseesseesseesseesseesseesseesseess

Come faccio a scrivere una riga sotto l'altra e non inserire lo spazio.

Ciao e grazie.
Codice: [Seleziona]
stringa = File.Load("/home/berserker/prova_read.txt")

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Scrivere in un file???
« Risposta #1 il: 16 Luglio 2009, 23:19:54 »
Per scrivere su più righe devi inserire il carattere speciale \n all'interno della frase. Ad esempio se in una textarea scrivi "ciao\nciao" nella textarea leggerai:

Codice: [Seleziona]
ciao
ciao


Come vedi \n fa andare a capo.

Spero di aver risolto il tuo problema.

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: Scrivere in un file???
« Risposta #2 il: 17 Luglio 2009, 08:09:09 »
In parte:
riga1
riga2
riga3
riga4
riga5
riga6
riga7
riga8
riga9
riga10
riga11

Perchè mi aggiunge  prima di ogni riga?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Scrivere in un file???
« Risposta #3 il: 17 Luglio 2009, 08:11:23 »
probabilmente perche quel carattere è presente nel file da cui copi le righe

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Scrivere in un file???
« Risposta #4 il: 17 Luglio 2009, 12:40:57 »
Da come si comporta il tuo programma penso che tu usi un ciclo iterativo per copiare le righe giusto? forse la variabile di conteggio iterativa fa un ciclo in più e forse quel ciclo preleva un carattere in più non definito nel primo file e che pertanto si presenta così..

postaci il tuo codice e vediamo insieme....

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: Scrivere in un file???
« Risposta #5 il: 17 Luglio 2009, 17:27:01 »
ecco il codice:

PUBLIC SUB Button1_Click()

  DIM a AS String
  DIM hfile, hfile2 AS file
  DIM h AS Short = 1
 
  OPEN "/home/berserker/prova_read.txt" FOR READ AS #hfile
  OPEN "/home/berserker/prova_write.txt" FOR WRITE CREATE AS #hfile2
 
  WHILE NOT Eof(hfile)
    LINE INPUT #hfile, a
    WRITE #hfile2 "riga" & h & "\n"
    INC h
  WEND
  CLOSE hfile
  CLOSE hfile2
END

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Scrivere in un file???
« Risposta #6 il: 17 Luglio 2009, 20:11:32 »
io spesso uso questo sistema:

Codice: [Seleziona]


PUBLIC SUB Button1_Click()

DIM stringa AS String
DIM stringhe AS String[]
DIM stringa2 AS String
DIM i AS String

stringa = File.Load("/home/berserker/prova_read.txt")

stringhe = Split(stringa, "\n")

FOR EACH stringhe                             ' questo passaggio in questo caso è inutile
                                              ' ma ti fa capire come ricostruire il file
    stringa2 = stringa2 & stringhe[i] & "\n"  '
    INC i                                     '
NEXT                                          '

File.Save("/home/berserker/prova_write.txt", stringha2)

END
 

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: Scrivere in un file???
« Risposta #7 il: 18 Luglio 2009, 00:30:52 »
ho provato il codice che mi hai suggerito e l'ho corretto in alcune parti per farlo funzionare:
PUBLIC SUB Button2_Click()

  DIM stringa AS String
  DIM stringhe AS String[]
  DIM stringa2 AS String
  DIM i AS Short

  stringa = File.Load("/home/berserker/prova_read.txt")

  stringhe = Split(stringa, "\n")

  FOR EACH stringhe                   ' questo passaggio in questo caso è inutile
                                      ' ma ti fa capire come ricostruire il file
    stringa2 = stringa2 & stringhe & "\n"  '
    INC i                                     '
  NEXT                                          

  File.Save("/home/berserker/prova_write.txt", stringa2)

END
cmq grazie per il suggerimento perchè in questa maniera ottengo il risultato voluto.

Ho risolto pure col metodo che usavo io inserendo il parametro della lunghezza nella riga write:
PUBLIC SUB Button1_Click()

  DIM a AS String
  DIM hfile, hfile2 AS file
  DIM h AS Short = 1
  DIM $array AS NEW String[]
 
  OPEN "/home/berserker/prova_read.txt" FOR READ AS #hfile
  OPEN "/home/berserker/prova_write.txt" FOR WRITE CREATE AS #hfile2
 
  WHILE NOT Eof(hfile)
    LINE INPUT #hfile, a
    WRITE #hfile2 "riga" & a & Chr$(10), Len("riga" & a) + 1
  WEND
 
  CLOSE #hfile
  CLOSE #hfile2
END
Sul manuale di gambas dice che questo parametro è facoltativo e se non viene specificato, di default scrive la stringa per intero. solo che gli aggiunge quello spazio maledetto. mentre specificando la lunghezza funziona tutto.
Cmq bella sta cosa di poter fare la stessa cosa da diverse strade.
Ciao.

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Scrivere in un file???(RISOLTO)
« Risposta #8 il: 18 Luglio 2009, 00:34:34 »
Il bello della programmazione è proprio quello.

è raccomandato racchiudere il codice tra i tag code...;-)