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 - Problema con le stringhe
Forum - C# / VB.NET - Problema con le stringhe

Avatar
klez91 (Normal User)
Pro


Messaggi: 117
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:53
Giovedì, 19/06/2008
Questo topic è stato chiuso dal moderatore

Ciao ragazzi :)! Ho questo problema con le stringhe, in pratica se vado a leggere una stringa di testo da un Stream di rete questa risulta "apparentemente" danneggiata. Dico apparentemente perche la stringa è leggibile in ogni sua parte però se la utilizzo, nel mio caso, per la funzione GetDirectories del Namespace System.IO.Directory sebbene rappresenti la lettera di un'unità valida come ad esempio "C:" mi genera un'errore di ArgumentException. Inoltre ho notato che mettendo in pausa il programma e verificando l'esattezza della stringa letta dallo stream di rete questa anziche essere "C:", è "C: , senza le virgolette di chiusura alla fine. Il metodo per inviarla è questo:

Codice sorgente - presumibilmente VB.NET

  1. '...
  2. 'A parte tutte le variabili iniziali accetta/rifiuta connessione ecc.
  3. Dim NtStrm As NetworkStream
  4. Dim DataSend() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes("C:")
  5. NtStrm.Write(DataSend, 0, UBound(DataSend) + 1)



Mentre per ricevere è:

Codice sorgente - presumibilmente VB.NET

  1. Dim DataArrival() As Byte
  2. NtStrm.Read(DataArrival, 0, Client.ReceiveBufferSize)
  3. Dim S As String = System.Text.ASCIIEncoding.ASCII.GetString(DataArrival)



P.S. - Ho notato anche che nella parte del programma deputata alla ricezione della stringa se volessi utilizzare un'altra semplice funzione come MsgBox(S & "Prova"), mi restituisce sempre solo la S e non sono riuscito a capire il perché!

Vi ringrazio molto !

Ultima modifica effettuata da klez91 il 19/06/2008 alle 19:14
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:54
Venerdì, 20/06/2008
E' capitato anche a me. Succede perchè in coda alla stringa ci sono carattere invisibili che vengono letti comunque. Usa questa funzione:
Codice sorgente - presumibilmente VB.NET

  1. Function GetString(ByVal ByteData() As Byte) As String
  2.   Dim Result As New System.Text.StringBuilder
  3.  
  4.   For Each B As Byte In ByteData
  5.     If B = 0 Then
  6.       Exit For
  7.     Else
  8.       Result.Append(Chr(B))
  9.     End If
  10.   Next
  11.  
  12.   Return Result.ToString
  13. End Function


Ultima modifica effettuata da Il Totem il 20/06/2008 alle 13:55
PM
Avatar
klez91 (Normal User)
Pro


Messaggi: 117
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 14:23
Venerdì, 20/06/2008
Grazie Totem era proprio quello che mi serviva :k: !

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 9:02
Sabato, 21/06/2008
Lieto che ti sia piaciuto :k:

PM