Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Replace fa le bizze...
Forum - C# / VB.NET - [VB.NET] Replace fa le bizze...

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Salve a tutti,
Il mio problema è semplicissimo, ma non capisco cosa lo causi!
Ho una stringa in cui voglio rimpiazzare determinati caratteri, così uso la funzione Replace. Quindi ho scritto una funzione che prende un parametro ByVal Text as String, mi rimpiazza i caratteri [Text = Text.Replace ("1", "2")] e mi restituisce la stringa modificata (Return Text, in fondo alla funzione)
La provo, va due volte, poi non da più segni di vita, e imperturbabile la stringa permane nella sua interezza.
Ne provo di tutte, e mi ritrovo a trasformare la funzione in una Sub e il parametro ByVal Text as String in ByRef Text as String
Il codice all'interno è identico, tranne che non c'è il Return alla fine :D
Anche questo va un paio di volta, poi nulla.
Aggiungo un dettaglio: questa funzione, e il codice che la usa,  è in una libreria esterna e quando vado a debuggare (si dice?) mi esce una finestra che mi avvisa che il codice del modulo è diverso da quando è stato compilato (ma io non ho toccato niente :_doubt: ), mi chiede se voglio continuare comunque, io metto si, e quando vedo il codice è effettivamente quello che ho scritto, con la differenza che funziona TUTTO tranne quella routine :pat: :pat:
Quando passo in debug sulle righe Text = Text.Replace ("1", "2"), quando funziona, mi seleziona tutta la riga di giallo, altrimenti solo
Text = Text.Replace ("1

Sono io che non sono capace o VS che impazzisce? :noway::noway:
Come risolvo?

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 1:21
Lunedì, 28/03/2011
su due piedi nessuno può darti una risposta leggendo il topic.
prova a mostrarci l'intera funzione com'è scritta nel tuo sorgente.
così riusciamo ad individuare l'errore.


PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 12:30
Lunedì, 28/03/2011
Non che il codice dica molto di più...
Funzione:
Codice sorgente - presumibilmente VB.NET

  1. Public Function ReplaceChars (ByVal Text as String) as String
  2. Text = Text.Replace("1", "2")
  3. Text = Text.Replace("3", "4")
  4. Text = Text.Replace("5", "6")
  5. Text = Text.Replace("7", "8")
  6. Text = Text.Replace("9", "10")
  7. Text = Text.Replace("11", "12")
  8. Return Text
  9. End Function


Sub:
Codice sorgente - presumibilmente VB.NET

  1. Public Sub ReplaceChars (ByRef Text as String)
  2. Text = Text.Replace("1", "2")
  3. Text = Text.Replace("3", "4")
  4. Text = Text.Replace("5", "6")
  5. Text = Text.Replace("7", "8")
  6. Text = Text.Replace("9", "10")
  7. Text = Text.Replace("11", "12")
  8. End Sub


PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 13:42
Lunedì, 28/03/2011
bha ti dirò il fatto che l'azione non te la ripete, proprio non saprei,
magari servirebbe una condizione per far ritornare l'input dato se il risultato non combacia nell'elemento da cambiare.

altrimenti restituisce il valore cambiato.

io ho fatto una prova e funziona correttamente in C# però.

Codice sorgente - presumibilmente C# / VB.NET

  1. public string Rimpiazzia(string input)
  2.         {
  3.             return input == "1" ? "2" : input == "3" ? "4" : input == "5" ? "6" :
  4.                    input == "7" ? "8" : input == "9" ? "10" : input == "11" ? "12" : input;
  5.         }



testando con questa funzione

Codice sorgente - presumibilmente C# / VB.NET

  1. int piazza = 0;
  2.         private void button3_Click(object sender, EventArgs e)
  3.         {
  4.             MessageBox.Show(Rimpiazzia(piazza.ToString()));
  5.             piazza++;
  6.         }



ho scritto questa piccola funzione partendo dal tuo esempio con la differenza che verifico se c'è qualcosa da cambiare, altrimenti restituisco il valore inviato.

prova a riscriverla diversamente magari ad ottimizzarla, perchè non vedo un errore.



PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 14:09
Lunedì, 28/03/2011
Il problema è che non funziona il codice, non che è errato, e questo credo sia dovuto a un problema di origini durante la compilazione. E' strano poichè tutto il resto funziona alla perfezione.
Ogni tanto funziona, e il problema non è di sicuro che non ha niente da cambiare

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 14:44
Lunedì, 28/03/2011
Sembra che il problema sia dovuto alle impostazioni di debug, cambiandole ho risolto (spuntare la casella "Attiva processo di hosting Visual Studio")
Grazie comuqnue, Thejuster

PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 15:02
Lunedì, 28/03/2011
di nulla :k:

cmq e la prima volta che mi capita di vedere che visual studio fà capricci sulla compilazione net.



PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:07
Lunedì, 28/03/2011
Anche io non ho ben capito come mai non funzionasse con quelle impostazioni, perchè alla fine il codice è sempre quello.
Le uniche cose che avevo messo erano l'ottimizzazione e la disattivazione dell'hosting (che ho capito che non serve a un cavolo :D), e con l'ottimizzazione (almeno durante il debug) rompeva alquanto

Pensa che l'altro giorno mi aveva completamente levato tutti i pulsanti da una form... e non c'era ragione di rimetterli a posto, tanto che ho dovuto modificare il Designer a mano per farlo ragionare :noway:

A presto ;)

PM Quote