Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET] Stringhe

Ciao ragazzi!!
Ma com'è possibile che quando eseguo questa istruzione...
Line = strReply.ReadLine()
...la quale mi torna   Line="" ...
if Line <> "" Then
...entra nella condizione????
A qualcuno è capitato???
Las dichiarazione delle variabili è la seguente:
Dim strReply As New StringReader(reply)
Dim Line As String
Grazie a tutti per le risposte!!
Max

...entra nella condizione????
Forse e' come java che vuole fare il test con il metodo Equals.
-- 
ciao, hal


Macchč!! Anche con
If NOT Line.Equals("")
mi entra nel ciclo... Mi sembra assurdo...

Sei sicuro che Line sia proprio vuota e non contenga qualche carattere non
visibile? (tipo Null o CRLF)
prova a metter prima dell' IF   Debug.Assert(Line = "")
e vedi se si ferma oppure no...
HTH
-- 
Corrado Cavalli [Microsoft MVP]
UGIdotNET - 
http://www.ugidotnet.org


In effetti non esegue l'Assert, però col debug interno io questa variabile
la vedo come Line="".
Ho poi notato che se mettevo in un msgbox degli asterischi prima e dopo la
Line:
msgbox ("***" + Line + "***")
gli asterischi dopo non me li visualizzava.
Per completezza questa è la funzione incriminata:
Private Function IsReplyCompleto(ByVal reply As String, ByRef stringa() As
String) As Boolean
Dim strReply As New StringReader(reply)
Dim Line As String
Dim bCompleto As Boolean = False
Dim i As Integer = 0
Do While (strReply.Peek() > -1)
    Line = strReply.ReadLine()
    If Line <> "" Then
        If (Char.IsDigit(Line, 0) And Char.IsDigit(Line, 1) And
Char.IsDigit(Line, 2) And Line.Substring(3, 1).Equals(" ")) Then
            bCompleto = True
            ReDim Preserve stringa(i)
            stringa(i) = Line
            i = i + 1
        End If
    End If
Loop
strReply.Close()
Return (bCompleto)
End Function

 Las dichiarazione delle variabili č la seguente:


 scusate la pigrizia...
Il problema è che qualsiasi carattere (compreso vbCr) il debugger lo vede,
anche se sono come un quadratino. Io nel debugger vedo Line="" ma non sono
convinto che quella sia una stringa vuota. In effetti poi non me lo prende
come tale! :(

L'Intellisense tronca però i nullchar ovvero chr(0)...


> L'Intellisense tronca però i nullchar ovvero chr(0)...
Inserisco quindi un
Debug.Assert(instr(line,chr(0)))
ma  niente da fare.
Ho provato a modificare il codice senza usare la classe stringreader, ma non
cambia nulla.

Errata Corrige:

Se inserisco nel codice :
if InStr(Line, Chr(0)) > 0 Then Line = ""
mi rileva il problema e me lo sistema.


restituisce 7;aaa
dopo il chr(0) conta il numero dei caratteri ma non stampa quelli dopo il
chr(0)
giuseppeD

 mi rileva il problema e me lo sistema.
Forse però è più logico un
Line.Replace(Chr(0), "")
Ciao.
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net


Se è per questo è anche più elegante. Cmq. di quella stringa, se contiene il
chr(0), non me ne faccio niente; è per questo che l'ho messa a "".  :)
Ciao!!

 chr(0), non me ne faccio niente; č per questo che l'ho messa a "".  :)
Neanche se č una stringa tipo
"ciao\0ciao"
?
dove \0 č il chr(0)
Ciao

 dove \0 è il chr(0)
Non avrò mai questa situazione. Questa situazione si genera su una stringa
vuota con in aggiunta  il chr(0).
Ho in pratica una stringa messa in uno stringreader e letta con il metodo
ReadLine. L'ultima cosa che legge è proprio il chr(0).
A presto!!