+ Rispondi al messaggio
Pagina 3 di 4 primaprima 1234 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 32

Estrazione caratteri da una stringa

  1. #21
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,482
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Ok .... allora prova ad aggiungere al codice che ti avevo proposto quello che inserisco come seconda riga

            Dim elenco As String = System.IO.File.ReadAllText( "elenco.txt" )
            elenco &= Environment.NewLine        Dim v() As String = Strings.Split(elenco, ":")
            For Each s As String In v
                If s.Contains("power") Then
                    Console.WriteLine(s.Trim.Substring(0, s.IndexOf(Environment.NewLine)))
                End If
            Next
    
    ℹ️ Leggi di pi su AntonioG ...

  2. #22
    ljt
    ljt non  in linea Scolaretto
    Post
    240
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Ok .... allora prova ad aggiungere al codice che ti avevo proposto quello che inserisco come seconda riga

            Dim elenco As String = System.IO.File.ReadAllText( "elenco.txt" )
            elenco &= Environment.NewLine        Dim v() As String = Strings.Split(elenco, ":")
            For Each s As String In v
                If s.Contains("power") Then
                    Console.WriteLine(s.Trim.Substring(0, s.IndexOf(Environment.NewLine)))
                End If
            Next
    
    Ho provato a inserire la riga nel codice, ma solito errore.
    Il codice l'ho modificato in questo modo, inserendo al posto del percorso del file il contenuto del comando cmd.result:
                Dim elenco As String = cmd.Result
                elenco &= Environment.NewLine
                Dim v() As String = Strings.Split(elenco, ":")
                For Each s As String In v
                    If s.Contains("power") Then
                        Console.WriteLine(s.Trim.Substring(0, s.IndexOf(Environment.NewLine)))
                    End If
                Next
    
    Veramente strano, perch facendo la visualizzazione del comando cmd.result con:
    msgbox(cmd.result)
    
    ottengo esattamente la stringa che viene scritta nel file elenco.txt

  3. #23
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,482
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Non puoi confrontare sullo schermo le stringhe perch, anche se sembrano uguali, possono contenere caratteri non visibili diversi.

    Comunque la questione mi sembra stana. Sei sicuro che te lo dia proprio in quel codice e non da qualche altra parte?
    Quando hai l'errore ha gi visualizzato qualcosa o no?

    Se dopo la

    For Each s As String In v

    metti una

    MsgBox(s)

    quali stringhe ti vengono visualizzate prima dell'errore?
    ℹ️ Leggi di pi su AntonioG ...

  4. #24
    ljt
    ljt non  in linea Scolaretto
    Post
    240
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Non puoi confrontare sullo schermo le stringhe perch, anche se sembrano uguali, possono contenere caratteri non visibili diversi.

    Comunque la questione mi sembra stana. Sei sicuro che te lo dia proprio in quel codice e non da qualche altra parte?
    Quando hai l'errore ha gi visualizzato qualcosa o no?

    Se dopo la

    For Each s As String In v

    metti una

    MsgBox(s)

    quali stringhe ti vengono visualizzate prima dell'errore?
    La cosa strana che risulta popolata ed esce:
    computer1
        power-state ( RO)
    
    Sto provando a debuggare passo passo, ma l'errore esce fuori sempre nella riga:
    Console.WriteLine(s.Trim.Substring(0, s.IndexOf(Environment.NewLine)))
    
    Ho provato a mettere il contenuto del comando in una casella di testo:
    Dim elenco As String = txtTesto1.Text.ToString.Trim
    
    ma niente solito errore.
    Il bello che se faccio un msgbox(cmd.result) esce fuori l'esatto contenuto del file elenco.txt

  5. #25
    ljt
    ljt non  in linea Scolaretto
    Post
    240
    Like Inviati  
    0
    Like Ricevuti  
    0
    Altri test:
    ho inserito:
        For Each s As String In v
                    If s.Contains("power") Then
                        MsgBox(s.Length.ToString)  --> restituisce 34
                        MsgBox(v.Length.ToString)  --> restituisce 17
                        Console.WriteLine(s.Trim.Substring(0, s.IndexOf(Environment.NewLine)))
                    End If
                Next
    
    I valori non sono mai a zero.

  6. #26
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,482
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Scusa ma ti ho fatto una domanda precisa che ti ripeto

    metti una

    MsgBox(s)

    quali stringhe ti vengono visualizzate prima dell'errore?
    ℹ️ Leggi di pi su AntonioG ...

  7. #27
    ljt
    ljt non  in linea Scolaretto
    Post
    240
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Scusa ma ti ho fatto una domanda precisa che ti ripeto

    metti una

    MsgBox(s)

    quali stringhe ti vengono visualizzate prima dell'errore?
    Come prima stringa viene visualizzato:
    "uuid ( RO) "
    poi
    " f51bf12f-478c-79ed-c7bb-4eddeb8dc01f" & vbLf & " name-label ( RW)"
    poi
    " computer1" & vbLf & " power-state ( RO)"
    e alla fine il solito errore:
    La lunghezza non pu essere minore di zero.
    Nome parametro: length
    Ho lasciato gli apici di inizio e fine per fare capire che ci sono anche degli spazi all'inizio e fine stringa.

  8. #28
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,482
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Se solo l'avessi scritto prima

    vbLf

    e non vbCrLf

    Il primo impostato dai sistemi *nix e il secondo da Windows.

    Quindi prova con

    Console.WriteLine(s.Trim.Substring(0, s.IndexOf(vbLf)))
    ℹ️ Leggi di pi su AntonioG ...

  9. #29
    ljt
    ljt non  in linea Scolaretto
    Post
    240
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Se solo l'avessi scritto prima

    vbLf

    e non vbCrLf

    Il primo impostato dai sistemi *nix e il secondo da Windows.

    Quindi prova con

    Console.WriteLine(s.Trim.Substring(0, s.IndexOf(vbLf)))
    E' vero, ma sbagliando si impara, me ne sono reso subito conto quando ho visto il valore della stringa.
    Difatti il comando cmd.result eseguito su pc con linux.
    Comunque adesso tutto ok ancora una volta hai fatto centro.

    Per chiarimenti riporto il codice corretto:
                Dim elenco As String = cmd.Result
                elenco &= Environment.NewLine
                Dim v() As String = Strings.Split(elenco, ":")
                For Each s As String In v
                    If s.Contains("power") Then
                        Console.WriteLine(s.Trim.Substring(0, s.IndexOf(vbLf)))
                        dgvVm.Rows.Add(False, s.Trim.Substring(0, s.IndexOf(vbLf)))
                    End If
                Next
    
    Grazie di nuovo a tutti e in particolare modo, ancora una volta, ad AntonioG.

    Per me il thread chiuso e risolto.

    Alla prossima puntata.


  10. #30
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,482
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    A questo punto il codice corretto questo

                Dim elenco As String = cmd.Result
                Dim v() As String = Strings.Split(elenco, ":")
                For Each s As String In v
                    If s.Contains("power") Then
                        dgvVm.Rows.Add(False, s.Trim.Substring(0, s.IndexOf(vbLf)))
                    End If
                Next
    
    dato che la seconda linea del vecchio codice non ha pi senso e quella che scrive in Console non serve pi
    ℹ️ Leggi di pi su AntonioG ...

+ Rispondi al messaggio
Pagina 3 di 4 primaprima 1234 ultimoultimo

Potrebbero interessarti anche ...

  1. Ricerca ed estrazione di stringa
    Da iemmgi nel forum Microsoft Excel
    Risposte: 16
    Ultimo Post: 13-02-2013, 12:02
  2. estrazione di caratteri da parte di una stringa
    Da Newton nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 11-03-2011, 23:41
  3. estrazione di una stringa da un nomefile
    Da Newton nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 25-11-2009, 15:42
  4. [Access] estrazione dati da stringa
    Da brian nel forum Microsoft Access
    Risposte: 11
    Ultimo Post: 09-12-2008, 00:15
  5. problemi con estrazione stringa
    Da dani83 nel forum Microsoft Word
    Risposte: 7
    Ultimo Post: 09-08-2007, 12:12