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 - Riscrivere parola al contrario C#
Forum - C# / VB.NET - Riscrivere parola al contrario C#

Avatar
xLuk3x (Normal User)
Rookie


Messaggi: 38
Iscritto: 12/06/2008

Segnala al moderatore
Postato alle 9:38
Lunedì, 28/07/2008
Giusto per  imitare il programmino "ottrid" di Galatolo_Federico.

Il mio è praticamente uguale, apparte che utilizza un interfaccia grafica.
Ecco il codice del button:

Codice sorgente - presumibilmente C++

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             char[] parola = new char[500];
  4.             parola = textBox1.Text.ToCharArray();
  5.             for (int x = parola.Length; x > 0; x--);
  6.             {
  7.                 textBox1.Text = parola.ToString();
  8.             }
  9.  
  10.         }



Il problema è che quando arrivo al ciclo for,

l'istruzione textBox1.Text = parola.ToString();

all'esecuzione mi restituisce sulla textBox la frase System.Char[].

Il programma completo dovrebbe riscrivere il mio nome luca, acul :rotfl:
Comunque, se qualcuno sa cosa c'è da fare meglio di me...

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:00
Lunedì, 28/07/2008
Codice sorgente - presumibilmente C++

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             char[] parola = new char[500];
  4.             parola = textBox1.Text.ToCharArray();
  5.             for (int x = parola.Length; x > 0; x--);
  6.             {
  7.                 textBox1.Text = parola.ToString();
  8.             }
  9.  
  10.         }



Ma per cosa utilizzi il for se ad ogni iterazione gli fai compiere la stessa identica operazione, pure sbagliata? Un array non può essere convertito in stringa: per tutti i tipi che non supportano la conversione, il metodo ToString restituisce il nome completo del tipo.
Forse volevi scrivere:
Codice sorgente - presumibilmente Plain Text

  1. TextBox1.Text += parola[x];


Il che dovrebbe dare un errore, perchè in una stringa di lunghezza X, l'ultimo carattere ha indice X-1, e il primo ha indice 0. Quindi dovrebbe essere:
Codice sorgente - presumibilmente C# / VB.NET

  1. char[] parola = new char[500];
  2. parola = textBox1.Text.ToCharArray();
  3. for (int x = parola.Length - 1; x >= 0; x--);
  4. {
  5.   textBox1.Text += parola[x];
  6. }


Ti fornisco anche due suggerimenti:
1. Non è necessario specificare la dimensione dell'array, poiché ToCharArray restituisce un array già inizializzato di dimensione diversa a seconda della lunghezza della stringa;
2. Non è necessario usare una variabile ausiliaria, a meno che non ti interessa la velocità (quindi per stringhe di lunghezza considerevole). Infatti, ogni variabile String ha la proprietà indicizzata Chars(n), che restituisce il carattere alla posizione n nella stringa. E' una proprietà di default, quindi puoi anche usare direttamente l'indicizzazione:
Codice sorgente - presumibilmente C# / VB.NET

  1. TextBox1.Text.Chars[2] =
  2. TextBox1.Text[2] =
  3. //Il terzo carattere del testo


PM Quote
Avatar
xLuk3x (Normal User)
Rookie


Messaggi: 38
Iscritto: 12/06/2008

Segnala al moderatore
Postato alle 11:13
Lunedì, 28/07/2008
Grazie totem dei suggerimenti.
Ho provato poi ad aggiustare, e va va va.. Grandissimo! Grazie..

Primo o poi spero di poter sviluppare programmi senza aver bisogno di scrivere un post perchjè non capisco + niente.

Grazie ancora:k:

Ultima modifica effettuata da xLuk3x il 28/07/2008 alle 11:16
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:26
Lunedì, 28/07/2008
Prego, e buona fortuna per il futuro.

P.S.: se stai usando vb2008, puoi aggiungere il metodo "Inverti" al tipo stringa con i metodi estensibili. C'è un articolo nella sezione Tutorials - Visual Basic.

PM Quote