Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: ealmuno - 13 Febbraio 2010, 16:33:36

Titolo: [risolto]Leggere matrice da file di testo
Inserito da: ealmuno - 13 Febbraio 2010, 16:33:36
Ciao,
sto cercando di scrivere e leggere una matrice da un file di testo. Per leggerla ho usato:
Codice: [Seleziona]
PUBLIC SUB salva_Click()
DIM hFile AS File
DIM stringa2 AS String
DIM a1 AS Integer
DIM b1 AS Integer

FOR a1 = 1 TO 8
FOR b1 = 1 TO 8
stringa2 = stringa2 & matr[a1, b1] & "\n"
NEXT
NEXT

  hFile = OPEN User.home &/ "testo.txt" FOR CREATE
  hfile.save(User.home &/ "testo.txt", stringa2)
  CLOSE #hFile
END

e per leggerla ho usato

Codice: [Seleziona]
PUBLIC SUB carica_Click()
DIM hFile AS File
DIM Stringa2 AS String

  hFile = OPEN User.home &/ "testo.txt" FOR INPUT
  stringa2 = hfile.Load(User.home &/ "testo.txt")
  matr = Split(stringa2, "\n", "", TRUE)
  CLOSE #hfile
END

Dove matr è la matrice.
Il problema è che al caricamento, è come se mi eliminasse le dimensioni.
Infatti, provando a fare il debug, quando uso lo split mi da come errore "Bad number of dimension"
Ho trovato il codice sempre qua nel forum e li è sembrato funzionare.
Grazie
Titolo: Re: Leggere matrice da file di testo
Inserito da: Ceskho - 13 Febbraio 2010, 17:05:31
Perchè i cicli for iniziano da 1? Prova a farli partire da 0 e farli arrivare a 7 invece che 8....

In più devi prelevarti i dati per la matrici con due cicli for così come gli hai inseriti..
Titolo: Re: Leggere matrice da file di testo
Inserito da: ealmuno - 13 Febbraio 2010, 17:17:18
Citazione
Perchè i cicli for iniziano da 1? Prova a farli partire da 0 e farli arrivare a 7 invece che 8....
Gli faccio partire da 1 perché la matrice di 0 è vuota, comunque ho fatto da 0 a 7 e ho aggiunto 1
Citazione
In più devi prelevarti i dati per la matrici con due cicli for così come gli hai inseriti..
fatto, ma non va lo stesso
Codice: [Seleziona]
PUBLIC SUB carica_Click()
DIM hFile AS File
DIM Stringa2 AS String
DIM a1 AS Integer
DIM b1 AS Integer

  hFile = OPEN User.home &/ "testo.txt" FOR INPUT
FOR a1 = 0 TO 7
FOR b1 = 0 TO 7
stringa2 = hfile.Load(User.home &/ "testo.txt")
NEXT
NEXT
  matr = Split(stringa2, "\n", "", TRUE)
  CLOSE #hfile
END
sempre nello split si ferma
Titolo: Re: Leggere matrice da file di testo
Inserito da: Ceskho - 13 Febbraio 2010, 17:20:38
Ma sei sicuro che questo modo sia giusto?

matr = Split(stringa2, "\n", "", TRUE)
Titolo: Re: Leggere matrice da file di testo
Inserito da: ealmuno - 13 Febbraio 2010, 17:29:59
il file di testo è una cosa del genere:

Codice: [Seleziona]
x
y
t
f

io vorrei che nella matr[1,1] ci fosse x, nella [1,2] ci fosse y....
oppure mi conviene usare funzioni più primitive, tipo leggere ogni riga?
Titolo: Re: Leggere matrice da file di testo
Inserito da: fsurfing - 13 Febbraio 2010, 17:32:58
lo sai che le matrici in gambas non funzionano bene se hanno + di 8 dimensioni?
Titolo: Re: Leggere matrice da file di testo
Inserito da: Ceskho - 13 Febbraio 2010, 17:34:22
lo sai che le matrici in gambas non funzionano bene se hanno + di 8 dimensioni?

Tanto la sua matrice ha 2 dimensioni ed 8 oggetti....il problema non si pone...
Titolo: Re: Leggere matrice da file di testo
Inserito da: fsurfing - 13 Febbraio 2010, 17:35:03
Citazione
Tanto la sua matrice ha 2 dimensioni ed 8 oggetti....il problema non si pone...
a me non sembra proprio
Titolo: Re: Leggere matrice da file di testo
Inserito da: fsurfing - 13 Febbraio 2010, 17:36:58
ma poi a che ti servono le matrici multidimensionali quando hai un linguaggio ad oggetti come gambas!
Titolo: Re: Leggere matrice da file di testo
Inserito da: ealmuno - 13 Febbraio 2010, 17:40:56
gli oggetti non gli so bene, la matrice è a 2 dimensioni, comuqnue forse ho risolto (leggendo riga per riga)
Titolo: Re: Leggere matrice da file di testo
Inserito da: fsurfing - 13 Febbraio 2010, 17:50:05
Codice: [Seleziona]
FOR a1 = 0 TO 7
FOR b1 = 0 TO 7
dal codice si direbbe che le le dimensioni sono 8  :P almeno per gambas
Titolo: Re: Leggere matrice da file di testo
Inserito da: Ceskho - 13 Febbraio 2010, 17:55:04
Codice: [Seleziona]
FOR a1 = 0 TO 7
FOR b1 = 0 TO 7
dal codice si direbbe che le le dimensioni sono 8  :P almeno per gambas

Tu stai confondendo un pò le cose....le dimensioni sono due: a1 e b1, gli elementi sono 64, ovvero 8x8
Titolo: Re: Leggere matrice da file di testo
Inserito da: ealmuno - 13 Febbraio 2010, 17:55:43
ha ragione Ceskho  :D
Titolo: Re: Leggere matrice da file di testo
Inserito da: fsurfing - 13 Febbraio 2010, 18:00:14
mi spiace ammetterlo ma ha proprio ragione..una volta tanto :P
Titolo: Re: Leggere matrice da file di testo
Inserito da: Ceskho - 13 Febbraio 2010, 18:06:42
Non ci posso credere


(http://agenziefiscali.rdbcub.it/uploads/pics/stupito_01.JPG)
Titolo: Re: Leggere matrice da file di testo
Inserito da: ealmuno - 13 Febbraio 2010, 19:55:41
Risolto: ecco il codice:
Codice: [Seleziona]
PUBLIC SUB carica_Click()
DIM hFile AS File
DIM a1 AS Integer
DIM b1 AS Integer
DIM sOneLine AS String

  hFile = OPEN User.home &/ "testo.txt" FOR INPUT
a1 = 1
b1 = 1
WHILE NOT Eof(hFile)
   LINE INPUT #hFile, sOneLine
   matr[a1, b1] = sOneLine
   a1 = a1 + 1
   IF a1 = 9 THEN
   a1 = 1
   b1 = b1 + 1
   ENDIF
     IF b1 = 9 THEN
     b1 = 1
   ENDIF
WEND

  CLOSE #hfile
END

N.B. la matrice parte da 1 e finisce a 8, in pratica ho letto linea per linea