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

    [vb6]Dividere una stringa in 2 o 3 sottostringhe

    Ciao a tutti.
    Lavoro in vb6.
    Ho una stringa del tipo "1111|2222|...|99999|" la cui lunghezza può raggiungere circa 9000 caratteri.
    Ho bisogno di dividere questa stringa in 2 sottostringhe (se la sua lunghezza è < 7999) o in 3 sottostringhe (se la sua lunghezza è > 7999). Tali sottostringhe devono però contenere i token della stringa (separati da "|") interamente, cioè non posso dividere "2222|" in "22" e "22|", ma lo devo conservare come "2222|" nella sottostringa.
    Come posso fare? Le sottostringhe naturalmente non devono superare i 3999 caratteri.
    Ciao e grazie in anticipo.

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Quale linguaggio ?

    -> VBDos

    -> VBClassic?
    ---> versione? 1,2,3,4,5,6

    -> dotNET?
    ---> VB.NET
    --------> versione? 2002, 2003,2005,2008
    ---> C#
    --------> versione? 2002, 2003,2005,2008

    -> altro... ?

  3. #3
    scusa, vb6.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Ci sono diverse strade per ottenere quello che vuoi.
    La prima che mi viene in mente è:
    1- usa una variabile (X) per indicare la posizione all'interno della stringa e inizializzala a 1
    2- prendi una sottostringa a partire da X di esattamente 3000 bytes (funzione Mid)
    3- cerca la posizione del'ultimo separatore "|" (funzione InstrRev)
    4- accorcia la sottostringa sino a quella posizione (funzione Mid o Left)
    5- imposta X alla posizione trovata +1
    6- cicla dal punto 2 fino a che la stringa non termina (funzione Len)

    Ciao

  5. #5
    ciao. scusa ma sono un novizio. potresti postarmi un po' di codice?
    Grazie mille!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    La prassi è che tu posti un po' di codice e specifichi cosa non ti funziona o cosa non capisci.
    Ti ho indicato alcune funzioni basilari di VB6 per la manipolazione di stringhe. Nel caso tu non le conosca, la prima cosa da fare è consultare la guida per capire a cosa servono e come si usano.
    Poi siamo qui.

  7. #7
    Ecco il codice che ho scritto:
    mi dà errore su ListaFiltri1 = Mid(ListaFiltri, 1, InStrRev(3990, CStr(ListaFiltri), "|")): type mismatch.
    Mi date un aiutinO?

    If CLng(Len(ListaFiltri)) > 3999 Then
    If CLng(Len(ListaFiltri)) < 7999 Then
    While CLng(Len(ListaFiltri)) <> 0
    If Len(ListaFiltri1) = 0 Then
    ListaFiltri1 = Mid(ListaFiltri, 1, InStrRev(3990, CStr(ListaFiltri), "|"))
    Else
    ListaFiltri2 = Mid(ListaFiltri, 1, InStrRev(3990, CStr(ListaFiltri), "|"))
    End If
    ListaFiltri = Left(ListaFiltri, InStrRev(3990, CStr(ListaFiltri), "|"))
    pos = InStrRev(3990, ListaFiltri, "|") + 1
    Wend
    ListaFiltri3 = "|"
    Else
    While CLng(Len(ListaFiltri)) <> 0
    If Len(ListaFiltri1) = 0 Then
    ListaFiltri1 = Mid(ListaFiltri, 1, InStrRev(3990, CStr(ListaFiltri), "|"))
    ElseIf CLng(Len(ListaFiltri2)) = 0 Then
    ListaFiltri2 = Mid(ListaFiltri, 1, InStrRev(3990, CStr(ListaFiltri), "|"))
    Else
    ListaFiltri3 = Mid(ListaFiltri, 1, InStrRev(3990, CStr(ListaFiltri), "|"))
    End If
    ListaFiltri = Left(ListaFiltri, InStrRev(3990, ListaFiltri, "|"))
    pos = InStrRev(3990, ListaFiltri, "|") + 1
    Wend
    End If
    Else
    ListaFiltri1 = ListaFiltri
    ListaFiltri2 = "|"
    ListaFiltri3 = "|"
    End If
    End If

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Scusa ma è praticamente incomprensibile.
    Visto che la manipolazione delle stringhe non è il tuo forte, ti suggerisco un'altra strada.
    - Suddividi la stringa in un array usando la funzione Split
    - Costruisci la sottostringa concatenando uno ad uno gli elementi dell'array e verificando che la lunghezza non superi 3000.
    - Riparti dall'elemento non aggiunto.

    Però mi sorge una domanda: a cosa può servire tutto ciò?

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.