Mi sembra di capire che si tratta di due "Stringhe" contenenti caratteri numerici... ad ogni modo, puoi utilizzare l'apposita e semplice funzione Comp, che compara due stringhe:
http://gambasdoc.org/help/lang/comp?it
Per ottenere il numero di caratteri differenti, dovresti comparare carattere per carattere....
...potrebbe essere per esempio una cosa di questo genere:
Public Sub Button1_Click()
Dim s, ss As String
Dim j As Byte
Dim a As Short
s = "0101"
ss = "0111"
' Contiamo fino al numero pari alla lunghezza di una stringa
' (le stringhe tu hai detto che sono di lunghezza uguale,
' seppur con caratteri successivamente modificati):
For j = 1 To Len(s)
' Se i rispettivi caratteri in posizione j all'interno delle due stringhe sono "diversi"...
If Mid(s, j, 1) <> Mid(ss, j, 1) Then
'...allora incrementa la variabile "a" di un'unità:
Inc a
Endif
Next
Print "Il numero di caratteri differenti fra le due stringhe è: "; a
End
In pratica, devi confrontare:
a = "0010010001100"
con
b = "1111000110011"
Il problema, cui penso di aver capito sia il tuo obiettivo, è che oltre a capire che sono diversi, anche qual'è il carattere diverso, invertendone il valore in base ad alcune condizioni.
Sempre se parliamo di stringhe, e non di un valore binario, potresti crearti un array di Byte, in cui splitti tutti i caratteri della stringa. Analizzare poi il singolo Byte diventa piuttosto semplice, come anche ricreare la stringa eventualmente modificata.
Altra alternativa, se i valori possono assumere due sole condizioni (0 e 1), è quella di trasformare la stringa sempre in un array di Integer (o equivalenti), convertendo opportunamente i singoli byte estratti dalla stringa. Anche in questo caso, a parte la conversione String->Integer, la gestione diventerebbe più semplice.
.... vorrei che mi venissero stampate le lettere c i a o l'una accanto all'altra e non solo l'ultima lettera. Come posso fare?
Violando il giusto approccio pedagogico di md9327 (e quindi rischiando anche io le randellate), solitamente se si hanno più caratteri da aggiungere fra loro, si procede aggiungendo il nuovo carattere al precedente contenuto di un oggetto di testo (come nel tuo caso) o di una variabile di tipo stringa:
TextArea1.Text = TextArea1.Text & nuovo_carattere
Esempio pratico banalissimo :
Public Sub Button1_Click()
Dim carat As String = "b"
' Aggiungo al testo, già presente nella "TextArea" , il carattere "A":
TextArea1.Text = TextArea1.Text & "A"
' Aggiungo al testo, già presente nella "TextArea" , il carattere "l":
TextArea1.Text = TextArea1.Text & "l"
' Aggiungo....... etc......etc.......
TextArea1.Text = TextArea1.Text & "i"
TextArea1.Text = TextArea1.Text & "b"
TextArea1.Text = TextArea1.Text & "a"
TextArea1.Text = TextArea1.Text & carat
TextArea1.Text = TextArea1.Text & Chr(97)
End
Il codice, sopra scritto, è a titolo meramente esemplificativo, e solo ed esclusivamente per mostrare come si aggiungono i caratteri. Ovviamente tale modalità vale anche se al posto dello specifico carattere hai variabili di tipo stringa.
Però, ripeto, ti conviene fare prima le ricerche nel forum, e scaricare il manuale base di Gambassss.
Randellate a IOSA!!!! :evil: >:(
Non volevo anzi, volevo ;D , essere cattivo...
Scherzi a parte, la mia era solo per chiarire un concetto, che a volte viene dimenticato o non ben percepito da chi si avvicina ad un linguaggio.
Ad ogni modo, gli esempi di vuott sono sicuramente utili, se lo scopo è quello che si intende ottenere.
Ulteriore suggerimento:
...
TextArea1.Text &= nuovo_carattere
...
che permette di scrivere un pochino meno...
:D
Comunque, quello che intendevo, era:
1) spiegare meglio che tipo di dato hai in ingresso, in particolare se sono una serie di bit, o caratteri rappresentanti dei bit ("0" e "1")
2) una volta identificato quello che tocca trattare, si può procedere a identificare i singoli valori
3) eventuali trasformazioni dovranno essere basate sul tipo di dato originale, quindi o binario o carattere
4) visualizzare e/o stampare il dato convertito in stringa, quindi direttamente leggibile, a video o verso qualunque altra destinazione
la sequenza segue la logica che deve essere adottata, e quindi necessita di sapere esattamente il punto di partenza, cioè il dato e il suo formato.
Questo serve anche a noi per poterti dare suggerimenti validi, ed evitare di darti informazioni sbagliate e/o fuorvianti.
P.S.: per vuott:
stai rischiando grosso... se capita ancora ti infetto con la ceskhonite rossa... ;D
Chiedo scusa a tutti!! so che avrei dovuto scrivere in una nuova discussione, ma erano piaciute le vostre risposte e avevo piacere di chiedere a voi in modo particolare...non sapendo in che altro modo fare ho scritto qui! :'( :'( :'( :'( chiedo venia! :-\ :-\
Inoltre vi ringrazio per le risposte che ho letto solo ora...in realtà avevo risolto poco dopo l'aver inserito la domanda scrivendo questo codice (che è come avete suggerito voi!!):
PUBLIC SUB ritorno_Click()
DIM b AS Integer
DIM a AS String
DIM Intero, InteroFinale AS Integer
DIM Esponente, crt AS Integer
DIM divisa AS String[]
DIM Sb AS String
DIM bit AS String = messbit.Text
DIM finale AS String
divisa = Split(bit, " ")
FOR EACH a IN divisa
Esponente = 0
InteroFinale = 0
FOR b = Len(a) TO 1 STEP -1
crt = Int(Val(Mid(a, b, 1)))
Intero = crt * 2 ^ Esponente
Esponente += 1
InteroFinale = InteroFinale + Intero
finale = Chr(InteroFinale)
NEXT
testo.Text = testo.Text & finale
NEXT
END
dove messbit è la TextArea in cui ho una serie di 0 e 1 che derivano dalla conversione in binario dei caratteri precedentemente inseriti in una TextArea che ho chiamato testo.
Probabilmente inorridirete quando leggerete il codice, ma è l'unica soluzione che ho trovato io...portate pazienza...la programmazione non fa proprio per me!! :mad: :mad: :mad:
Ah, ora mi è rimasto solo il problema che l'ultima lettera si stampa 3 volte invece che una sola...probabilmente il ciclo viene eseguito due volte in più del necessario, ma ora vedrò di risolvere!!! :coder: :coder: