Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    110

    [VB] "Cryptatore" di testi

    Salve.... Sono sempre io con un altro problema....
    Ma siccome a ogni problema la prorpia discussione eccoomi in un altra discussione:
    Allora, stavo realizzando un cryptatore di testi....

    Dove ci sono 2 TextBox
    E quando scrivi nella TextBox2 nella TextBox1 esce il messaggio codificato tutto ciò è da fare col comando Replace.... Però non viene!!! Adesso vi mostro una piccola parte del comando:



    codice:
      Dim asd As String
            Dim lol As String
            Dim xD As String
            Dim xP As String
            asd = TextBox2.Text.Replace("A", "M")
            lol = asd.Replace("K", "J")
            xD= lol.Replace("M", "R")
            xP= xD.Replace("U", "I")
            TextBox1.Text = xP
    Ecco scrivendo così teoricamente quando fai A nella textBox2 nella textbox1 esce M
    Invece no! esce R!! Non so come risolverlo questo problema.....
    Contando che comunque devo cambiare la lettera a tutto l'alfabeto....

    Ringrazio tutti e chiunque possa o provi ad aiutarmi....

    Saluti
    DakJak.

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Ma è assolutamente lampante che se prima fai:
    codice:
    asd = TextBox2.Text.Replace("A", "M")
    e poi fai:
    codice:
    xD= lol.Replace("M", "R")
    le A diventeranno tutte R!

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    110
    Si ok... Questo io ci sono arrivato però quando ho testato il programma....
    Quindi adesso la mia domanda è, come si può risolvere?
    Ovvero come posso mettere che la A sia uguale a M e che la M sia uguale a R
    Senza far si che quando faccio A esca R ?

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Mi pare altrettanto lampante!

    Devi scambiare l'ordine delle istruzioni:

    codice:
    xD= lol.Replace("M", "R")
    asd = TextBox2.Text.Replace("A", "M")


    P.S.
    Non devi usare il grassetto per il tutto il messaggio.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    110
    Ti ringrazio per la disponibilità ma così facendo il programma in ogni caso va in errore e comnunque anche se andasse bene non è facile scambiare le lettere in modo che nessuna stia sotto l'altra dalla "A" alla "Z" c'è un programma in rete ed è giorni che mi sto chiedendo il creatore di quel programma come cacchio ha fatto.

    P.s. :
    Mi piace il grassetto *-* ...
    Non è vietato dal forum se non sbaglio :P! (non credo sia vietato xD).

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,314

    Moderazione

    Originariamente inviato da DakJak
    Mi piace il grassetto *-* ...
    Non è vietato dal forum se non sbaglio :P! (non credo sia vietato xD).[/B]
    La formattazione del forum va utilizzata quando necessario, senza abusarne, pertanto evita di scrivere i tuoi messaggi tutti in grassetto, per favore.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,522
    il primo modo che mi viene in mente per fare una cosa del genere (che poi non ho capito se vuoi usare il Cifrario Di Cesare, ed in questo caso si tratta di codifica e non di crittografia) è di dichiarare due enumerazioni e mettere in una il caratteri che vuoi convertire e nell'altra (in corrispondenza) i caratteri da sostituire.

    esempio :
    codice:
    Partial Public Class Form1
        Inherits Form
    
        Private Enum Caratteri
            A
            B
            C
            D
            E
            F
            G
            H
            I
            J
            K
            L
            M
            N
            O
            P
            Q
            R
            S
            T
            U
            V
            W
            X
            Y
            Z
        End Enum
        Private Enum Sostituti
            M
            N
            O
            P
            Q
            R
            S
            T
            U
            V
            W
            X
            Y
            Z
            A
            B
            C
            D
            E
            F
            G
            H
            I
            J
            K
            L
        End Enum
    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            If Not String.IsNullOrWhiteSpace(Me.TextBox1.Text) Then
                Dim sb As New StringBuilder()
                For i As Integer = 0 To Me.TextBox1.Text.Length - 1
                    sb.Append([Enum].GetName(GetType(Sostituti), CInt([Enum].Parse(GetType(Caratteri), Me.TextBox1.Text.Substring(i, 1).ToUpper()))))
                Next
                Me.Label1.Text = sb.ToString()
            End If
        End Sub
    End Class
    comunque concordo anche io... vedere il grassetto e un po fastidioso.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    110
    Ok chiedo scusa per il grassetto >.<!!
    Riguardo a te U235 ti ringrazio tanto per la descrizione per tutto il tuo aiuto quindi ti chiedo se con un pò di pazienza e gentilmente puoi anche spiegarmi esattametne il codice che hai scritto riga per riga.... Se puoi farlo mi fai un favore
    (perchè ti confesso che queste cose qui :

    codice:
    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            If Not String.IsNullOrWhiteSpace(Me.TextBox1.Text) Then
                Dim sb As New StringBuilder()
                For i As Integer = 0 To Me.TextBox1.Text.Length - 1
                    sb.Append([Enum].GetName(GetType(Sostituti), CInt([Enum].Parse(GetType(Caratteri), Me.TextBox1.Text.Substring(i, 1).ToUpper()))))
                Next
                Me.Label1.Text = sb.ToString()
            End If
        End Sub
    End Class
    non le so ancora io >.<!).

    In ogni caso grazie mille ! E scusate ancora per il grassetto!

  9. #9
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,522
    figurati ... anche io sono alle prime armi :nonsifiniscemaidiimparare:

    ho preferito dividere il tutto se no era complesso commentare.
    codice:
     Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            'Controllo che il TextBox non sia vuoto
            If Not String.IsNullOrWhiteSpace(Me.TextBox1.Text) Then
                'dichiaro uno StringBuilder (serve ad accodare valori che saranno convertiti in stringa con .ToString())
                Dim sb As New StringBuilder()
                'ciclo per estrappolare tutti i caratteri della TextBox
                For i As Integer = 0 To Me.TextBox1.Text.Length - 1
                    'prendo un carattere del testo della TextBox a partire dall'indice alla quale sono arrivato
                    Dim testoTextBox As String = Me.TextBox1.Text.Substring(i, 1)
                    'richiamo la corrispondenza del carattere (del textbox) con il carattere dell'enumerazione
                    Dim Caratteri As Carattere = [Enum].Parse(GetType(Caratteri), testoTextBox) 'passandoli il tipo (Caratteri) e la stringa (carattere della textBox) mi viene restituito un oggetto (caratteri) con lo stesso valore del carattere (textBox) ad esempio Caratteri.A o Caratteri.B ecc. ecc.
                    'una volta ottenuto il carattere dell'enumerazione ne ricavo la sua posizione come indice numerico (esempio se "A" allora sarà 0, se "B" allora sarà 1 ecc. ecc.)
                    Dim numeroCarattere As Integer = CInt(Carattere)
                    'una volta ottenuto l'indice faccio lo stesso con l'enumerazione Sostituti ma al contrario, cioè li passo l'indice ottenuto in precedenza per recuperare la stringa corrispondente
                    Dim sostituto As String = [Enum].GetName(GetType(Sostituti), numeroCarattere)
                    '"appendo" il nuovo carattere (sostituito) allo StringBuider
                    sb.Append(sostituto)
                Next
                Me.Label1.Text = sb.ToString() ' infine converto in stringa tutti i caratteri e li strivo sul TextBox
            End If
        End Sub

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    110
    Nulla da fare il programma così facendo viene sballatissimo cioè... Non l ocapisco bene nemmeno io e se metto A esce G invece di M >.<!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.