Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Copiare parte del contenuto di un array in uno secondario in Visual Basic 2010

    Ciao a tutti, da ieri ho iniziato ad utilizzare visual basic e mi trovo un po' in difficoltà dato che arrivo dal C. Ho un vettore che viene riempito tramite tcp/ip e ho una stringa di dati nella forma xxxx"vbCrLf"xxxx"vbCrLf"xxxx"vbCrLf". Bene questa stringa non ha dimensione fissa, io devo fare un controllo sulla medesima e una volta trovato il carattere vbCrLf devo copiare la stringa in un array secondario.
    es: vettore secondario= xxxx"vbCrLf"
    Quando troverò un'altra parte di stringa come quella scritta sopra, la sovrascrivo.

    rifaccio un esempio:

    AT01=Run"vbCrLf"SW01=22"vbCrLf"ecc

    Per prima cosa nell'array secondario avrò

    -Array secondario=AT01=Run"vbCrLf" nel primo ciclo

    se incontro altra istruzione valida il secondo array sarà

    -array secondario=SW01=22"vbCrLf"
    e così via. La mia domanda è: come posso spezzare il primo array attraverso il "vbCrLf" e poi copiare quel contenuto all'interno del secondo array ausiliario? Vi metto una parte di codice:

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If client.Available > 0 Then 'verifico se il cliente è disponibile
    Dim VettRx(client.Available - 1) As Byte 'vettore che riceve lo stream di dati in ricezione
    stream.Read(VettRx, 0, VettRx.Length)
    Dim text As String = UTF8.GetString(VettRx)

    Ecco in VettRx mi trovo le informazioni che ho messo sopra come esempio. Come faccio a copiare il pezzo di stringa che mi interessa in un array secondario??
    Io ho pensato a una cosa del genere:
    Public Sub CopyArray(ByVal VettRx)
    Dim VettAp(64) As String
    while VettRx <> vbCrLf 'non so come scorrere l'array VettRx
    copio il contenuto in VettRx in VettAp
    End Sub
    Mi scuso per la confusione,ma è un casino spiegarlo!Grazie per chi avrà la pazienza di darmi una risposta! Non so proprio come copiare il contenuto nell'array secondario!Grazie anticipatamente

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Molto probabilmente hai solo bisogno di usare il metodo Split della stringa

    http://msdn.microsoft.com/it-it/libr...m.string.split(v=vs.80).aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3

    Ok

    Potresti spiegarti meglio facendo un esempio sul mio codice?? Scusami ma sono agli inizi e non so dove andare a parare..

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Puoi fare cosi (se ho capito quello che ti serve ):
    codice:
        ReadOnly separatori As Char() = New Char() {Chr(10), Chr(13)}
    
        Private Sub ReadStream()
            Dim s As String = "AT01=Run" & Environment.NewLine & "SW01=22" & Environment.NewLine
    
            Dim s1() As String = GetArray(s)
    
        End Sub
    
    
    
        Private Function GetArray(ByVal input As String) As String()
            Dim arrSplit() As String = input.Split(separatori, StringSplitOptions.RemoveEmptyEntries)
    
            Return arrSplit
    
        End Function
    identifichi i separatori come carriage return/linefeed Chr(10), Chr(13) e splitti la stringa facendoti ritornare già l'array coi comandi senza bisogno di fare il ciclo sul primo array

    Ciao

  5. #5
    Ciao Talion, grazie per la risposta. Il codice che mi hai mandato viene applicato direttamente sull'array in ricezione? mi Spiego meglio. Io ricevo i dati All'interno del vettore VerrRx, so il formato in cui mi arrivano i dati dalla scheda che sarebbe il mio server. E so quali comandi ci sono al suo interno ma il tutto mi arriva random. La prima operazione che devo fare è riuscire a spezzare le stringhe che sono separate da uno spazio e a capo in C lo identifico come \r\n mentre in visual basic è vbCrLf. Bene io da questo mio array devo separare i vari comandi che sono in formato XXXX.XXXXX=valore. ma io non so il primo comando quale sia dato che è random.. So solo che ogni XXXX.XXX=value è separato da un vbCrLf.. Quindi io indistintamente devo prendere la prima stringa che incontro e metterla nel secondo array che creo io. Ovviamente nel primo array mi serve un indice per sapere dove mi sono fermato nell'ultima istruzione valida. Mi sono spiegato meglio?? E' più facile spiegarlo con un'immagine o a parole spiegarlo scrivendolo è un casino

    NB i primi XXXX prima del punto sono sempre in quel formato
    dopo il punto il numero è variabile.

    es: AX01.Value=2222
    ma puo essere AX01.CmdVal=321

    Grazie anticipatamente! Non so come uscirne

  6. #6
    Io ho scritto questa funzione ma non mi fa nulla non me la visualizza nemmeno in una textbox!

    Public Sub CpArray(ByVal VettRx)
    Dim s(64) As String
    Dim i As Integer
    i = 0
    s = Split(VettRx, vbCrLf)
    For i = 0 To UBound(s)
    TextBox3.Text = TextBox3.Text & s(i)
    Next
    End Sub

    Gli stream in cui ricevo e scrivo sono questi:

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If client.Available > 0 Then 'verifico se il cliente è disponibile
    Dim VettRx(client.Available - 1) As Byte 'vettore che riceve lo stream di dati in ricezione
    stream.Read(VettRx, 0, VettRx.Length)
    Dim text As String = UTF8.GetString(VettRx)
    TextBox2.Text = TextBox2.Text & text & vbCrLf
    End If
    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim y() As Byte = UTF8.GetBytes(TextBox1.Text & vbCrLf) ' trasformiamo contenuto textbox1 in dati(byte)
    stream.Write(y, 0, y.Length)
    TextBox2.Text = TextBox2.Text & TextBox1.Text & vbCrLf
    TextBox1.Text = ""
    End Sub

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E dove la chiami la funzione CpArray ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8

    Risolto in parte

    La questione dello split dell'array e la copia in un altro l'ho fatta attraverso 3 array distinti e funziona. Ora volevo chiedervi come posso mandare un file di testo .txt al server tramite il client appena mi connetto?? Il file di testo mi viene letto in automatico dal server e non mi interessa come lo interpreta. Devo solo mandare 2 file di testo.. Che cosa devo utilizzare per mandare questi file?? Grazie in anticipo!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dato che il problema è un altro rispetto a quello di 7 giorni fa penso proprio che dovresti aprire un nuovo thread con un titolo adeguato.

    E indicare di che server stai parlando ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10

    Ok

    Va bene! Ringrazio tutti voi per il tempo dedicatomi! E aprirò il discorso in una nuova discussione.. Ciao a tutti e grazie di nuovo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.