Newsgroup: it.comp.lang.visual-basic
Titolo: Confronto Text box Visual Studio 2019

Ciao,
sto lavorando alla mia app in Visual studio e ho bisogno di confrontare il numero di versioni.
nella TextBox TB_VersioneAttuale leggo la versione dell'app così:
 
Tb_VersioneAttuale.Text = "V " & My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & "." & My.Application.Info.Version.Build & "." & My.Application.Info.Version.Revision
 
nella TextBox TB_VersioneFile leggo quanto scritto in un file txt così:
 
Dim sr As StreamReader
sr = File.OpenText("MioPercorso\Testo numero nuova versione da pubblicare.txt")
 
Tb_VersioneFile.Text = sr.ReadToEnd
sr.Close()
 
ora confronto le 2 textbox così:
 
If Tb_VersioneAttuale.Text <> Tb_VersioneFile.Text Then
MsgBox("Versione diversa")
ElseIf Tb_VersioneAttuale.Text = Tb_VersioneFile.Text Then
MsgBox("Stessa versione ")
End If
 
il codice è in Form load della mia maschera e quando viene eseguito mi dice sempre "Versione diversa" anche se è la stessa!
cosa c'è che non gli piace in questo modo di leggere le info? Interpreta male il testo?
grazie
Marco

 "." & My.Application.Info.Version.Revision
 
Ecco.
 
Supponiamo che con questa operazione Tb_VersioneAttuale.Text ora sia
presente un carattere speciale (tipo EOF o BELL o ESC per esempio);
quando salvi come testo ovviamente la funzione "pulirà" la stringa.
 
prova leggere il risultato dell'operazione in ASCII e confronta (sempre
in ASCII) con la stringa che leggi dal file.


Ciao e grazie per la risposta..
Come converto i valori dellev2 textbox in ASCII?

Il giorno mercoledì 14 settembre 2022 alle 21:24:58 UTC+2 Franz_aRTiglio ha scritto:

ho provato a gestire i dati in ASCII ma non funziona, mi rende il numero 86 per entrambe le Textbox...
ho provato così:
 
        Dim Tb_VersFile As Integer
        Tb_VersFile = Asc(Tb_VersioneFile.Text)
 
        Dim Tb_VersAtt As Integer
        Tb_VersAtt = Asc(Tb_VersioneAttuale.Text)
 
in attesa di gentile risposta provo a lavorarci
grazie
Marco
 

 
 
ahhhhhhhhhhhhhhhh?
 
86?
non era 42?
 
 
-- 
GIO
 
 

Il 15/09/2022 10:09, Marco75 ha scritto:

prima di tutto indagherei, usando *magari* il len
 
if len(text1.text) <> len(text2.text) then
	msgbox "minchia sono diversamente lunghe...", vbexclamation, "DIVERSE!"
else
	msgbox "ma porca puzzola sono anche lunghe uguale", vbinformation, 
"LUNGHE UGUALE!"
end if
 
 
-- 
GIO
 
 

in attesa di gentile risposta provo a lavorarci
 
La funzione Asc() riporta il l'equivalente ASCII di un carattere.
 
Per una stringa devi fare una cosa del genere (in VB6, ma credo che .net cambi
poco).
 
Dim ASSCHR% (100)
 
For i = 1 to len(Tb_VersioneFile.Text)
	ASSCHR (i)  =  Asc (Mid (Tb_VersioneFile.Text, i, 1)))
Next
 
Fai la stessa cosa anche per l'altra stringa e poi confronti i valori ASCII uno
ad uno.
 
 
-- 
ciao
  Stefano

 uno ad uno.
 
Ottima risposta che integro: anche la textbox ha delle "limitazioni" e
sarebbe meglio fare il confronto sulle variabili e NON sul contenuto
delle textbox:
 
dim versioneattuale as string
dim versionesalvata as string
 
versioneattuale = "V " & My.Application.Info.Version.Major & "." & 
My.Application.Info.Version.Minor & "." & 
My.Application.Info.Version.Build & "." & 
My.Application.Info.Version.Revision
 
Dim sr As StreamReader
sr = File.OpenText("MioPercorso\Testo numero nuova versione da 
pubblicare.txt")
versionesalvata  = sr.ReadToEnd
sr.Close()
 
If len(versionesalvata) <> len(versioneattuale) then
  debug.print "lunghezza diversa"
end if
 
dim txtasc as string
For i = 1 to len(versioneattuale)
 txtasc = txtasc & " " & asc(mid(versioneattuale,1)
 debug.print txtasc
next i
 
txtasc =""
For i = 1 to len(versionesalvata)
 txtasc = txtasc & " " & asc(mid(versionesalvata,1)
 debug.print txtasc
next i


che sono lunghe uguali lo so già nel senso che in una txtbox posso avere V 1.0.0.0, nell'altra (che leggo dal file txt) potrei avere V 1.0.0.0 oppure V 1.0.0.1 oppure V 1.0.1.1 ecc...
se le versioni sono diverse allora eseguo del codice se no non faccio nulla...
Marco


ho provato questo codice, ad ogni click scrive 86 e comunque anche se le versioni sono uguali continua ad indicare che non lo sono, la parte di codice con Len mi dice che hanno lunghezza diversa ma non è così:
se leggo la versione dell'app è V 1.0.6.4
se leggo la versione dal file è V 1.0.6.4
quindi sono lunghi uguali!
 
mi sembra strano che sia così complesso confrontare 2 stringhe!
Marco

 che sono lunghe uguali lo so già nel senso che in una txtbox posso avere V 1.0.0.0, nell'altra (che leggo dal file txt) potrei avere V 1.0.0.0 oppure V 1.0.0.1 oppure V 1.0.1.1 ecc...
[cut]
 
No, non lo sai.
 
Presupporre una certezza non è la strada migliore per il problem solving.
 
Quello che vedi è uguale, ma se alla verifica non sono uguali, da 
qualche parte *evidentementemente* c'è una differenza.
 
Ciao e in bocca al lupo ;)
 
 
 
-- 
GIO
 
 


sto guardando in internet per vedere se trovo qualcosa in merito, il mio presupposto partiva dal fatto che nel file txt ho messo lo stesso numero di caratteri, numeri e spazi di ciò che leggo nella versione dell'app...


Credo di aver trovato l'errore, in ogni caso con questo codice sembra funzionare:
 
 Dim VersAttuale As String
        Dim VersFile As String
 
        VersAttuale = "V " & My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor & "." & My.Application.Info.Version.Build & "." & My.Application.Info.Version.Revision
        VersFile = File.ReadAllText("MioPercorso\Testo numero nuova versione da pubblicare.txt")
 
        MsgBox(Tb_VersioneAttuale.Text & vbNewLine & Tb_VersioneFileIni.Text)
 
        If String.Compare(VersAttuale, VersFile, True) Then
            MsgBox("Versione diversa")
        Else
            MsgBox("Stessa versione")
        End If
 
    End Sub
 
grazie a tutti!
Marco