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
C# / VB.NET - [c#]problema vettore dichiarato in proc
Forum - C# / VB.NET - [c#]problema vettore dichiarato in proc

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


Messaggi: 146
Iscritto: 18/06/2009

Segnala al moderatore
Postato alle 16:22
Giovedì, 12/11/2009
uso c# e ho creato una procedura che mi crea un vettore di tipo struct chiamato scheda...
se opero sul vettore nel main, cercando di organizzare un ciclo, nel mio caso un for in questo modo:
Codice sorgente - presumibilmente C# / VB.NET

  1. for (int k = 0; k < scheda.Lenght-1; k++)
  2. {....}



mi si presenta l'errore: Il nome 'scheda' non esiste nel contesto corrente

come posso risolvere questo problema? grazie per l'attenzione.

Ultima modifica effettuata da microprocessore il 12/11/2009 alle 16:23
PM Quote
Avatar
Gianluca87 (Ex-Member)
Expert


Messaggi: 300
Iscritto: 16/11/2008

Segnala al moderatore
Postato alle 19:57
Giovedì, 12/11/2009
Ciao potresti scrivere qualche dettaglio in +?

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 8:45
Venerdì, 13/11/2009
di solito nasce questo problema quando non dichiari una struttura pubblica.
ma strano. non credo che la struttura necessiti di questo.

ma prova ugualmente

Codice sorgente - presumibilmente C++

  1. public struct Scheda {
  2.  
  3. public int var1;
  4. public int var2;
  5.  
  6. }



Ultima modifica effettuata da Thejuster il 13/11/2009 alle 8:46


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
microprocessore (Normal User)
Pro


Messaggi: 146
Iscritto: 18/06/2009

Segnala al moderatore
Postato alle 11:11
Venerdì, 13/11/2009
Testo quotato

Postato originariamente da Gianluca87:

Ciao potresti scrivere qualche dettaglio in +?




sì. io ho la seguente procedura:
Codice sorgente - presumibilmente C# / VB.NET

  1. static void fusione (tipo_struct []v1, tipo_struct []v2)
  2. {
  3.       tipo_struct [] scheda=new tipo_struct [v1.Lenght+v2.Lenght];
  4. }



successivamente vado nel main è digito:
Codice sorgente - presumibilmente C# / VB.NET

  1. fusione(squadra1, squadra2);
  2. //squadra1 e squadra2 sono dei vettori di tipo_struct dichiarati prima
  3. for (int k=0; k<scheda.Lenght; k++)
  4. {....}



per Thejuster:appena posso provo a fare come mi hai suggerito e ti faccio sapere.

Ultima modifica effettuata da microprocessore il 13/11/2009 alle 11:14
PM Quote
Avatar
microprocessore (Normal User)
Pro


Messaggi: 146
Iscritto: 18/06/2009

Segnala al moderatore
Postato alle 15:01
Venerdì, 13/11/2009
Testo quotato

Postato originariamente da Thejuster:

di solito nasce questo problema quando non dichiari una struttura pubblica.
ma strano. non credo che la struttura necessiti di questo.

ma prova ugualmente

Codice sorgente - presumibilmente C++

  1. public struct Scheda {
  2.  
  3. public int var1;
  4. public int var2;
  5.  
  6. }




ho dichiarato lo struct scheda prima del main.
il problema sparisce, ma queesto perchè il codice mi legge la struttura scheda, non il vettore della procedura infatti mi da più di un errore

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:39
Venerdì, 13/11/2009
Testo quotato

Postato originariamente da microprocessore:

Testo quotato

Postato originariamente da Gianluca87:

Ciao potresti scrivere qualche dettaglio in +?




sì. io ho la seguente procedura:
Codice sorgente - presumibilmente C# / VB.NET

  1. static void fusione (tipo_struct []v1, tipo_struct []v2)
  2. {
  3.       tipo_struct [] scheda=new tipo_struct [v1.Lenght+v2.Lenght];
  4. }



successivamente vado nel main è digito:
Codice sorgente - presumibilmente C# / VB.NET

  1. fusione(squadra1, squadra2);
  2. //squadra1 e squadra2 sono dei vettori di tipo_struct dichiarati prima
  3. for (int k=0; k<scheda.Lenght; k++)
  4. {....}



per Thejuster:appena posso provo a fare come mi hai suggerito e ti faccio sapere.



E' ovvio che se dichiari scheda dentro fusione, essa non è visibile al di fuori della funzione. Essendo una variabile locale e non globale la sua vita inizia e termina con il corpo di fusione.

x Thejuster: confondi la variabile col suo tipo...

PM Quote
Avatar
microprocessore (Normal User)
Pro


Messaggi: 146
Iscritto: 18/06/2009

Segnala al moderatore
Postato alle 15:51
Venerdì, 13/11/2009
quindi cosa dovrei fare?

Ultima modifica effettuata da microprocessore il 13/11/2009 alle 15:54
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:11
Venerdì, 13/11/2009
Per prima cosa, torna a studiarti gli ambiti di visibilità delle variabili :rotfl:
Poi, o dichiari scheda fuori da fusione, ma in questo caso sarebbe inutile anche l'esistenza della funzione; oppure cambi il tipo restituito da fusione e le fai restituire il valore scheda ("return scheda;").

PM Quote
Avatar
microprocessore (Normal User)
Pro


Messaggi: 146
Iscritto: 18/06/2009

Segnala al moderatore
Postato alle 16:27
Venerdì, 13/11/2009
se ti ho capito bene andrebbe cambiata la procedura in funzione, quindi prima del main ho fatto così:
Codice sorgente - presumibilmente C# / VB.NET

  1. //funzione
  2. static esemplare fusione(esemplare[] v, esemplare[] v1)
  3. {
  4.     esemplare[] v2 = new esemplare[v.Length + v1.Length];
  5.     return v2;
  6. }


e nel main così:
Codice sorgente - presumibilmente Plain Text

  1. //creo vettore unico
  2. esemplare[]scheda=fusione(squadra1, squadra2);


esemplare è il tipo dello struct.

ma ho ancora dei problemi... mi compaiono questi errori:
Errore    1    Impossibile convertire implicitamente il tipo 'Equipe_ricercatori.Program.esemplare[]' in 'Equipe_ricercatori.Program.esemplare'

Errore    2    Impossibile convertire implicitamente il tipo 'Equipe_ricercatori.Program.esemplare' in 'Equipe_ricercatori.Program.esemplare[]'

Errore    3    'System.Array' non contiene una definizione di 'Lenght' e non è stato trovato alcun metodo di estensione 'Lenght'che accetta un primo argomento di tipo 'System.Array'. Probabilmente manca una direttiva using o un riferimento a un assembly.    

Errore    4    'System.Array' non contiene una definizione di 'Lenght' e non è stato trovato alcun metodo di estensione 'Lenght'che accetta un primo argomento di tipo 'System.Array'. Probabilmente manca una direttiva using o un riferimento a un assembly.

Errore    5    Impossibile applicare l'operatore '>' a operandi di tipo 'gruppo di metodi' e 'int'    

Errore    6    Impossibile convertire implicitamente il tipo 'string' in 'int'    

Errore    7    Impossibile convertire implicitamente il tipo 'int' in 'string'

Ultima modifica effettuata da microprocessore il 13/11/2009 alle 16:28
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo