Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Confronto Text box Visual Studio 2019

19 views
Skip to first unread message

Marco75

unread,
Sep 14, 2022, 10:13:52 AM9/14/22
to
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

Franz_aRTiglio

unread,
Sep 14, 2022, 3:24:58 PM9/14/22
to
Nel suo scritto precedente, Marco75 ha sostenuto :
> 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

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.

Marco75

unread,
Sep 14, 2022, 3:36:55 PM9/14/22
to
Ciao e grazie per la risposta..
Come converto i valori dellev2 textbox in ASCII?

Marco75

unread,
Sep 15, 2022, 4:09:53 AM9/15/22
to
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

GIO

unread,
Sep 15, 2022, 10:43:26 AM9/15/22
to
Il 15/09/2022 10:09, Marco75 ha scritto:
> Il giorno mercoledì 14 settembre 2022 alle 21:24:58 UTC+2 Franz_aRTiglio ha scritto:
[cut]
>>> 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ì:
[cut]
>> prova leggere il risultato dell'operazione in ASCII e confronta (sempre
>> in ASCII) con la stringa che leggi dal file.
[cut]
> ho provato a gestire i dati in ASCII ma non funziona, mi rende il numero 86 per entrambe le Textbox...
[cut]
> grazie
> Marco
>

ahhhhhhhhhhhhhhhh?

86?
non era 42?


--
GIO


GIO

unread,
Sep 15, 2022, 11:04:23 AM9/15/22
to
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


SB

unread,
Sep 15, 2022, 11:31:30 AM9/15/22
to
Il giorno Thu, 15 Sep 2022 01:09:52 -0700 (PDT), Marco75
<marcop...@gmail.com> 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

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

Franz_aRTiglio

unread,
Sep 15, 2022, 1:25:03 PM9/15/22
to
Il 15/09/2022, SB ha detto :
> Il giorno Thu, 15 Sep 2022 01:09:52 -0700 (PDT), Marco75
> <marcop...@gmail.com> 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
>
> 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.

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

Marco75

unread,
Sep 16, 2022, 3:26:15 AM9/16/22
to
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

Marco75

unread,
Sep 16, 2022, 4:07:16 AM9/16/22
to
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

GIO

unread,
Sep 16, 2022, 4:42:32 AM9/16/22
to
Il 16/09/2022 09:26, Marco75 ha scritto:
[cut]
> 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


Marco75

unread,
Sep 16, 2022, 4:58:35 AM9/16/22
to
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...

Marco75

unread,
Sep 16, 2022, 5:32:57 AM9/16/22
to
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
0 new messages