Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Tipo non corrispondente
Forum - Visual Basic 6 - Tipo non corrispondente

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Aangelus (Normal User)
Pro


Messaggi: 143
Iscritto: 29/03/2011

Segnala al moderatore
Postato alle 14:04
Martedì, 15/07/2014
Salve creando questo tipo di array mi genera un errore di "Tipo non corrispondente"

modulo
Type Dativoti
QVoti As Integer
Voto(10) As Integer
End Type

Type Nomiclasse
QNomi As String
Nomi(5) As Dativoti
End Type

Type Daticlasse
NClassi As Integer
Classe(3) As Nomiclasse
End Type

Global classi As Daticlasse
form

classi.Classe(0) = "1E"
classi.Classe(0).Nomi(0) = "Alessandra"
classi.Classe(0).Nomi(0).Voto = "8"

Suggerimenti ? grazie in anticipo

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6405
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:18
Martedì, 15/07/2014
Fossi in te rivedrei tutte le strutture ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Aangelus (Normal User)
Pro


Messaggi: 143
Iscritto: 29/03/2011

Segnala al moderatore
Postato alle 16:29
Martedì, 15/07/2014
Ciao nessuno le strutture vengono autocompilate come suggerimenti il che mi fa escludere un errore di incatenamento della struttura, il codice si blocca sull'assegnazione della classe 1E mentre se eliminassi le prime due assegnazioni come classe 1E e nome Alessandra il programma funziona assegnandomi soltanto il voto

Ultima modifica effettuata da Aangelus il 15/07/2014 alle 16:31
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6405
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:48
Martedì, 15/07/2014
"Errore di incatenamento" non so cosa sia ... io intendevo il fatto che le strutture non mi sembrano "logicamente" organizzate correttamente. In realtà non conosco il problema completamente ma penso siano da rivedere ...

Per l'errore, dovresti scrivere

classi.Classe(0).QNomi = "1E"

ma non so cosa rappresenta QNomi ...

Anche il resto non è corretto ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Aangelus (Normal User)
Pro


Messaggi: 143
Iscritto: 29/03/2011

Segnala al moderatore
Postato alle 18:20
Martedì, 15/07/2014
Grazie nessuno della disponibilità ho modificato il tutto in questo modo

Modulo:

Type Dativoti
QVoti As Integer
SVoto As String
End Type

Type Nomiclasse
QNomi As Integer
SNomi As String
Nomi(5) As Dativoti
End Type

Type Daticlasse
QClassi As Integer
SClasse As String
Classe(3) As Nomiclasse
End Type

Global classi(5) As Daticlasse

Form:

classi(0).SClasse = "1E"
classi(0).Classe(0).SNomi = "Alessandra"
classi(0).Classe(0).Nomi(0).SVoto = "8"

Le variabili con inizio Q le userò per rendere l'array dinamico

che ne pensi ?

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 19:08
Martedì, 15/07/2014
Quello che ti chiami array dinamico........... Per caso.............. è un vettore?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6405
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:25
Martedì, 15/07/2014
Testo quotato


Le variabili con inizio Q le userò per rendere l'array dinamico



Questa non l'ho capita ...

Testo quotato

che ne pensi ?



Dovresti postare la tua necessità, descrivendole senza pensare alle strutture. Solo così è possibile risponderti.

Prima di tutto, cosa deve fare il tuo programma?
Quali dati deve trattare?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Aangelus (Normal User)
Pro


Messaggi: 143
Iscritto: 29/03/2011

Segnala al moderatore
Postato alle 2:23
Mercoledì, 16/07/2014
Il programma dovrebbe:

1) contenere tutte le classi di una scuola

2) contenere i nomi degli studenti all'interno delle classi

3) contenere i rispettivi voti che potranno avere

di conseguenza ho cercato di  creare un array a 3 dimensioni dove una volta creata la struttura avrei voluto renderla dinamica con redim preserve per non aumentare inutilmente lo spazio di memoria
come per esempio

QClassi  = QClassi  +1
redim preserve classi(0).Classe(QClassi)



Ultima modifica effettuata da Aangelus il 16/07/2014 alle 2:29
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6405
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:49
Mercoledì, 16/07/2014
Devi farlo con le strutture per forza? Più adatte sarebbero le classi e un DB ...

In ogni caso, se nella struttura indichi il numero di elementi di un vettore,  non potrai ridimensionarlo.
Una rivisitazione con le strutture, anche se può apparire un po' complicata, sarebbe

Codice sorgente - presumibilmente Delphi

  1. Type Voto
  2.     Materia As String
  3.     Valore As String
  4. End Type
  5.  
  6. Type Alunno
  7.     Nome As String
  8.     NumVoti As Integer
  9.     Voti() As Voto
  10. End Type
  11.  
  12. Type Classe
  13.     ClSez As String
  14.     TotAlunni As Integer
  15.     Alunni() As Alunno
  16. End Type
  17.  
  18. Global QClassi As Integer
  19. Global Classi() As Classe



e quindi nel form Load

Codice sorgente - presumibilmente Plain Text

  1. QClassi=0



mentre per aggiungere i vari elementi

Codice sorgente - presumibilmente VB.NET

  1. ' Aggiunge classe
  2.  
  3.     QClassi = QClassi + 1
  4.     ReDim Preserve Classi(QClassi)
  5.     With Classi(QClassi)
  6.         .ClSez = "1E"
  7.         .TotAlunni = 0
  8.     End With



Codice sorgente - presumibilmente VB.NET

  1. ' Aggiunge alunno in classe numero cix (da fornire)
  2.    
  3.     Classi(cix).TotAlunni = Classi(cix).TotAlunni + 1
  4.     ReDim Preserve Classi(cix).Alunni(Classi(cix).TotAlunni)
  5.     With Classi(cix).Alunni(Classi(cix).TotAlunni)
  6.         .Nome = "Pinco Pallo"
  7.         .NumVoti = 0
  8.     End With



Codice sorgente - presumibilmente VB.NET

  1. ' Aggiunge voto per l'alunno numero aix in classe numero cix (da fornire)
  2.  
  3.     Classi(cix).Alunni(aix).NumVoti = Classi(cix).Alunni(aix).NumVoti + 1
  4.     ReDim Preserve Classi(cix).Alunni(aix).Voti(Classi(cix).Alunni(aix).NumVoti)
  5.     With Classi(cix).Alunni(aix).Voti(Classi(cix).Alunni(aix).NumVoti)
  6.         .Materia = "Informatica"
  7.         .Valore = "4-"
  8.     End With



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo