Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132

    differenze tra VB6 e.NET

    Ciao a tutti,
    sto imparando .NET e non riesco ad utilizzare delle funzioni che da VB6 a net sono cambiate.
    ho fatto delle ricerche e mi sono documentato, ma faccio fatica a comprendere.

    1. in vb6 per ripetere lo stesso carattere in una stringa
    codice:
    Print #pNumFile, String$(40, "-")
    con .net è diverso
    la documentazione dice
    Visual Basic 6.0
    Alcune delle funzioni di Visual Basic 6.0 hanno due versioni: una che restituisce un valore String e l'altra che restituisce un valore Variant. Tali coppie di funzioni sono differenziate tramite il simbolo del dollaro ($), associato come suffisso alla versione String, ad esempio Chr e Chr$.

    Visual Basic .NET
    In Visual Basic .NET la coppia di funzioni è stata sostituita da un'unica funzione. Le versioni Variant non vengono più utilizzate ed è possibile chiamare le versioni String con e senza il suffisso $.

    Anche se è definito solo Trim, in Visual Basic .NET Trim$ viene accettato, in quanto il simbolo del dollaro ($) funge da carattere identificatore di tipo per il tipo di dati String.

    ...........
    ho Provato con PadRight(30, "+"c)
    codice:
    
                stringa = stringa.PadRight(30, "+"c) 
    ma no riesco a farlo funzionare
    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------
    2. con VB6 leggere la lunghezza in byte di una stringa era relativamente semplice
    codice:
    dim aa as integer
    aa = LenB   ("stringa")
    nella documentazione la funzione LenB viene rimandata a Len
    La funzione LenB delle versioni precedenti di Visual Basic restituisce il numero di byte in una stringa, anziché i caratteri e viene utilizzata soprattutto per la conversione di stringhe in applicazioni con set di caratteri a byte doppio (DBCS). Tutte le stringhe di Visual Basic .NET sono in Unicode e LenB non è più supportato .

    mi date qualche dritta per superare gli scogli??!?!?!!?!?!?
    grazie ciao
    Buon Ferragosto
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da daspide
    ho Provato con [...]
    ma no riesco a farlo funzionare
    Che significa "non riesci a farlo funzionare"?
    Ottieni risultati differenti da quelli aspettati? Ottieni un errore di compilazione?

    Ad ogni modo, è possibile creare direttamente una stringa con caratteri ripetuti in questo modo:

    codice:
    Dim MyString As New String("X", 30)
    Originariamente inviato da daspide
    con VB6 leggere la lunghezza in byte di una stringa era relativamente semplice
    E' sufficiente usare la proprietà Length della variabile di tipo String che contiene il testo di cui si vuole ottenere la lunghezza (in caratteri, non in byte).

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132
    Che significa "non riesci a farlo funzionare"?
    ottengo errori di compilazione

    la sintassi quindi l'opposto di VB6, ma anche del PadRight
    codice:
    VB6 
    String$(40, "-")
    --------------------------------
    VB.NET 
    Dim stringa As String 
    stringa = stringa.PadRight(30, "+"c) 
    -----------------------------------------------------
    Citazione alka: 
    Dim MyString As New  String("X", 30)
    rispetto al tuo post a parte New non capisco la differenza
    -----------------------------------------------------------------------------------
    -----------------------------------------------------------------------------------
    Leggere Byte
    dunque VB6
    codice:
    Private Sub Command1_Click()
    Dim qq As String
    qq = Me.Text1 'valore es "aaaa2" 
    Me.Text2 = Len(qq) 'lunghezza 5 
    Me.Text3 = LenB(qq) 'lunghezza byte 10 
    End Sub
    vb.net
    codice:
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim qq As String
            qq = Me.TextBox9.Text 'valore es "aaaa2" 
            Me.TextBox10.Text = Len(qq) 'lunghezza 5 
            Me.TextBox11.Text = qq.Length 'lunghezza byte 5 
        End Sub
    E' sufficiente usare la proprietà Length della variabile di tipo String che contiene il testo di cui si vuole ottenere la lunghezza (in caratteri, non in byte).
    Qundi non è possibile ottenere la lunghezza in Byte di una stringa di testo?
    oppure sbaglio approccio?
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da daspide
    ottengo errori di compilazione
    Ok, ma quali? Qui ci vuole il cavatappi per ottenere qualche dettaglio...

    Originariamente inviato da daspide
    la sintassi quindi l'opposto di VB6, ma anche del PadRight
    Eh!? Cosa vuol dire? :master:

    Originariamente inviato da daspide
    rispetto al tuo post a parte New non capisco la differenza
    Che la mia versione non restituisce errori di compilazione e funziona?

    Originariamente inviato da daspide
    dunque VB6
    Secondo me, sarebbe proprio meglio lasciar perdere VB6, evitando il più possibile anche la ricerca di similitudini nell'uso delle funzioni, per sicurezza.

    Originariamente inviato da daspide
    Qundi non è possibile ottenere la lunghezza in Byte di una stringa di testo?
    oppure sbaglio approccio?
    La lunghezza che ottieni in entrambi i casi che hai citato è la lunghezza della stringa in caratteri. La dimensione in byte effettiva, nel caso di VB.NET, trattandosi di caratteri Unicode, è di 2 byte per ciascun carattere.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di daspide
    Registrato dal
    Nov 2001
    Messaggi
    132
    Ok, ma quali? Qui ci vuole il cavatappi per ottenere qualche dettaglio...
    Ambiente VB.NET
    1.tentativo
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim aaa As String
            me.TextBox1.Text = String$(40, "-")
        End Sub
    String$ viene sottolineato automaticamente
    nell'Elenco attività dice:
    ....\WindowsApplication1\Form1.vb(71): La parola chiave non può contenere un carattere tipo.
    in compilazione stessi errori

    2.tentativo
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim aaa As String
            me.TextBox1.Text = String(40, "-")
        End Sub
    String viene sottolineato automaticamente
    nell'Elenco attività dice:
    ....\WindowsApplication1\Form1.vb(71): "String" non è un'espressione valida perché è un tipo classe.
    e
    ....\WindowsApplication1\Form1.vb(71): Previsto "."
    in compilazione stessi errori
    3.tentativo
    cosi, ovviamente, funziona.....
    codice:
            Dim MyString As New String("X", 30)
            Me.TextBox2.Text = MyString
    A fronte delle letture che stò facendo, questi errori hanno un senso.
    Nel momento in cui decido di passare alla pratica mi scontro con vecchi esempi e cerco di dedurre per confronti oppure per togliermi certe curiosità prima di studiarle.

    ---------------------------------------------------------------------------
    Originariamente inviato da daspide
    la sintassi quindi l'opposto di VB6, ma anche del PadRight
    ho notato che:
    codice:
    .NET
    Dim MyString As New String("X", 30) prima si inserisce il carattere poi il n° di volte da ripetere
    
    VB6
    Dim MyString As New String$(40, "-") prima si inserisce il n° di volte da ripetere poi il carattere
    comunque in futuro cercherò solo di prendere spunto per creare soluzioni pittosto che confronti/importazioni di esempi

    -------------------------------------------------------------------------------

    La lunghezza che ottieni in entrambi i casi che hai citato è la lunghezza della stringa in caratteri. La dimensione in byte effettiva, nel caso di VB.NET, trattandosi di caratteri Unicode, è di 2 byte per ciascun carattere.
    qundi LenB leggeva l'unicode di ogni carattere in VB6; oggi, con .NET do per scontato che:
    -----
    Dim aa as string
    me.t.text = aa.Lenght
    -----
    occuperà il doppio del n° di caratteri?!?!
    ho provato così
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim aaa As String
            Dim bbb As Byte
            aaa = "xasd"
            Me.TextBox1.Text = aaa.Length
            Me.TextBox1.Text += " ToB " & Convert.ToByte(aaa.Length)
            Me.TextBox1.Text += " Ph " & bbb.Parse(aaa.Length)
        End Sub
    non da errori, nel campo testo scrive 4 ToB 4 Ph 4.
    in nessun caso mi dice che un carattere vale 2 BYTE!
    ...cosa puoi fare con un rasoio,un limone ed un gatto?!?......
    d%asp%ide

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da daspide
    Nel momento in cui decido di passare alla pratica mi scontro con vecchi esempi e cerco di dedurre per confronti oppure per togliermi certe curiosità prima di studiarle.
    Come dicevo nel messaggio precedente, eviterei confronti con VB6, soprattutto con i nomi di funzioni e i costrutti estremamente particolari.



    Originariamente inviato da daspide
    Dim aa as string
    me.t.text = aa.Lenght
    occuperà il doppio del n° di caratteri?!?!
    Non occupa il doppio numero di caratteri: il numero di caratteri all'interno di una stringa saranno sempre quelli che memorizzi; se una parola è formata da 10 caratteri, avrà 10 caratteri. Ciò che è doppio è la dimensione che occupa ciascun carattere, che è di 2 byte perché si tratta di caratteri Unicode, uno standard che prevede appunto 2 byte per rappresentare un singolo carattere.

    Originariamente inviato da daspide
    in nessun caso mi dice che un carattere vale 2 BYTE!
    Un carattere non vale 2 byte, ma occupa due byte. Ciò che hai fatto nel tuo codice è semplicemente convertire il valore di Length, che come ho già detto restituisce la lunghezza in caratteri di una stringa in un valore di tipo Byte, pertanto se una stringa è formata da 10 caratteri, otterrai un valore pari a 10 leggendo Length, e convertendo 10 in un valore di tipo Byte otterrai, appunto, un valore di tipo Byte contenente 10.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.