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

    [VB6] sostituire parte di stringa

    Ricevo in una comunicazione seriale una lunga stringa di questo tipo:

    <instruciontid="29" <![DATA[1 36 0 120]]></entry>
    <instruciontid="30" <![DATA[4 78 1 0]]></entry>
    <instruciontid="31" <![DATA[6 83 1 2]]></entry>
    <instruciontid="32" <![DATA[7 83 1 2]]></entry>
    .....eccetera ...........

    (Nota: la stringa è UNICA, non una serie di stringhe, i ritorni a capo fanno parte della stessa stringa!)

    Ho bisogno di sostituire i valori all'interno del campo data, ad esempio cosi':

    <instruciontid="29" <![DATA[11 6 33 0]]></entry>
    <instruciontid="30" <![DATA[7 8 0 122]]></entry>
    <instruciontid="31" <![DATA[68 8 10 223]]></entry>
    <instruciontid="32" <![DATA[71 870 143 678]]></entry>

    ovviamente non posso usare la funzione REPLACE perche' i valori numerici dentro le parentesi
    quadre sono sempre diversi come anche il numero di caratteri fra "[" e "]".

    Avete qualche idea??? Grazie!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma il cambio segue un criterio?


    P.S. VB6 si tratta nell'altra sezione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Il cambio me lo calcolo io a runtime....mi perdo solo nel replace dei dati numerici perche'
    all'interno delle quadre nn abbiamo sempre lo stesso numero di caratteri a causa dei numeri
    a una, due, e tre cifre!

    P.S. Ops, scusa, nn sapevo....in quale sezione dovevo postare?

    Grazie per la risposta

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da uruse1980
    Il cambio me lo calcolo io a runtime....
    Quindi prendi la prima data e calcoli la nuova e così via con la seconda ...

    E quale codice usi per prelevare i vari dati ?

    P.S. Ops, scusa, nn sapevo....in quale sezione dovevo postare?
    Nella sezione Visual Basic ma adesso lascia fare ad un moderatore che sposterà questa discussione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Sostanzialmente cosi': (Ho riscritto per te l'esempio per nn postarti decine di righe di codice)

    codice:
    Dim stringa As String
    Dim inizio As Integer
    Dim fine As Integer
    Dim valori() As String
    
    stringa = "<instruciontid=29 <![DATA[1 36 0 120]]></entry>"
    inizio = InStr(1, stringa, "DATA")
    fine = InStr(inizio, stringa, "]")
    dati = Mid(stringa, inizio + 5, fine - inizio - 5)
    valori = Split(dati, " ")
    A questo punto ho il mio array contente i valori che volevo leggere!
    Adesso, premesso che abbiamo gia' modificato i numeri nell'array, come li sostituiamo
    velocemente nella stringa senza riscriverla da capo?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se modifichi gli elementi del vettore 'valori' puoi ottenere la stringa con

    stringa2 = Mid(stringa, 1, inizio + 4) + Join(valori, " ") + Mid(stringa, fine)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Hai ragione, forse è l'unico modo..... peccato, pensavo esistesse qualche funzione per poter usare caratteri jolly......magari qualcosa del tipo:

    stringa="<instruciontid=29 <![DATA[1 36 0 120]]></entry>"
    stringa2= Replace(stringa,"[*]",[1 2 3 4])

    ovvero "rimpiazza tutti i caratteri fra parentesi quadre con........"

    E vabbe'....farò come dici tu!!!!

    Grazie Oregon!!! Sei stato gentilissimo! :-)

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.