Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

peshe

Convertendo texto

Recommended Posts

Olá pessoal, eu tenho um text box, um botão e um outro TextBox, gostaria que quando um texto é colocado no TXt Box e apertasse o botão ele "encriptasse" o texto e o colocasse no label. Ex: se eu escrevesse "ab", deveria aparecer "•_ •••" (código morse). Mas eu estou com problemas no código: Private Sub Command1_Click()Dim Texto As O QUE COLOCO AQUI?Texto = Text1.TextA = "•_"B = "•••"Text2.Text = TextoEnd SubQual é minha solução?Té mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas peshe, Faz da seguinte forma: Crias um " Module ", onde colocas o seguinte codigo: Function Cifrar(valor As Integer, Texto As String) As String Dim i, a As Integer For i = 1 To Len(Texto) a = Asc(Mid(Texto, i, 1)) a = a + valor If a > 255 Then a = a - 255 Cifrar = Cifrar & Chr(a) Next iEnd Function********************************************************* Depois no botão em k voce carrega para encriptar, colaca lá o seguinte codigo: Private Sub Command1_Click() Text2.Text = Cifrar(1, Text1.Text) End Sub************************************************A text1.text é o local onde coloca a palavra para ser encriptada e a text2.text é o local onde aparece a palavra criptada. Espero ter ajudado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não aparece nada pois está faltando a função que irá encriptar o texto.

A função terá que funciona pegando letra por letra, e substituindo-a pelo código respectivo, ou seja, você terá que ter em algum lugar - uma matriz por exemplo - todos os códigos de todos os caracteres possíveis.

Fazendo só com a e b ficaria assim:

Function Criptografa(texto as string) as string	 codigos = Array("•_",""•••")	 final = ""	 for x=1 to len(texto)		 letra = lcase(mid(texto,x,1)) 'pega uma letra e deixo-a em minúsculo		 final = final & codigos(asc(letra) - 97)	 next xEnd FunctionMsgbox Criptografa("ab") 'vai retornar •_ •••

Aquele "- 97" está ali pois partindo da idéia que o código ASCII da letra "a" é 97 se eu subtrair 97 irá dar 0 que é o índice do código da letra "a" no array, e como as letras seguintes também são os números seguintes esse jeito dá certo. Mas caso vocÊ permita outros caracteres será necessário uma verificação mais detalhada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Luizgrs, onde eu coloco esse código? E vocÊ não pois uma aspas a mais na segunda linha não (codigos = Array("•_"," "•••"))?

 

dark_devil, seu código não funcoinou não, se eu escrevo "a", aparece "b", se eu escrevo "b", aparece "c", e assim por diante...

 

Té mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peshe,Programa a pouco tempo, naum tenho muita experiencia, mas tente algo do típo:Private Sub Command1_Click()a = "•_"b = "•••" Select Case Text1.Text Case "a" Text2.Text = a Case "b" Text2.Text = b End SelectEnd Subnão sei se é o melhor caminho, mas parece funcionar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew, mas só da certo se tiver uma unica letra, se eu escrever "ab", não da certo, mas se escrever sómente "a", funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim, a funçao len te retorna o tamanho do campo, por exemplo:se o usuario escrever "abab" no text1 e você fizer:x = len(text1.txt)ai o X sera igual a 4! assim você sabera quantas letras a pessoa digitou...sabendo a quantidade de letras você usa a funçao mid para dividir oq foi escrito pelo usuario, por exemplo:-a sintaxe é assim-> mid(variavel, inicio, tamanho)x = bananay = mid(x, 2, 3)y será igual a "ana", pois pegou tres silabas apartir da segunda posiçao...assim você podera dividir silaba por silaba a entrada do usuario.Com as silabas separadas, você pode trata-las com o select case(igual eu mostrei no post acima), depois é só juntar tudo e mostrar no text2!Cara, é um processo bem trabalhoso, e como disse, tambem sou iniciante, naum sei se é o melhor jeito de se fazer isso.... espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew, vou tentar.Qualquer coisa eu posto aqui.Té mais.Cara, to me confundindo com esse mid, meu código ficou assim:Private Sub Command1_Click()a = "•_"b = "•••"x = Len(Text1.Text)y = Mid(x, 2, 3) 'naõ entendi essa parteSelect Case Text1.TextCase "a"Text2.Text = aCase "b"Text2.Text = bEnd SelectEnd SubEu tenho que usar x e y antes do len e do mid?E o que seria esse variavel, inicio, tamanho?té mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, vai ser um pouco mais complicado... mais ou menos isso:y = mid(x, 1, 1) - aqui ele pega a primeira sílaba da variavel y = mid(x, 2, 1) - aqui ele pega a segunday = mid(x, 3, 1) - aqui a terceiray = mid(x, n, 1) - assim sucessivamenteonde n = len(x)na realidade voce vai terque fazer um laço (while), e em cada volta do laço ele conta um, até atingir o valor encontrado com a funçao "len"(tamanho da variavel)! ai para cada volta que ele der, você guarda o resultado em uma matriz ou em alguma variavel....

Compartilhar este post


Link para o post
Compartilhar em outros sites

O laço vai ficar assim:x = Len(Text1.Text)z = 1While Not z > xy = Mid(text1.text, z, 1)z = z + 1wendsó que aqui eu estou guardando cada sílaba dentro da mesma variavel, você precisara guardar em em uma matriz(naum sei fazer isso)...

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim.... no código que eu coloquei, para cada volta que o laço dá ele separa uma letra... só que eu to colocando essas letras na variavel "y" uma por cima da outra, assim quando terminar você só tera a ultima letra dentro da variavel "y"... as letras precisam ser guardadas em locais diferente, sei que da pra fazer isso usando matriz( alguma coisa do tipo: y[1], y[2] até y[n]), mas tambem naum sei como que funciona esse negócio de matriz...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na boa kra, não use codigo viciado, isso não é programar.

 

Olha o que o Luiz escreveu.

 

Function Criptografa(texto as string) as string	 codigos = Array("•_",""•••")	 final = ""	 for x=1 to len(texto)		 letra = lcase(mid(texto,x,1)) 'pega uma letra e deixo-a em minúsculo		 final = final & codigos(asc(letra) - 97)	 next xEnd Function

Coloca isso dentro de um module ( project > add > module )

 

ai no evendo clic do botão você coloca

 

text2.txt = Criptografa(text1.txt)

 

Quero lembrar que quem construiu o algoritmo acima foi "Luizgrs"

Compartilhar este post


Link para o post
Compartilhar em outros sites

ae preda, nada contra ninguem aqui do forum, mas eu tinha deixado claro que programava a pouco tempo e que naum sabia se aquele era o metodo mais eficiente, só pedi para ele tentar daquela maneira pq naum estava conseguindo dos outros jeitos e era o único jeito que eu sabia... mas de qualquer forma valeu pelo toque, assim eu posso aprender com meus erros...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, da um Syntax error na linha codigos = Array("•_",""•••") O que é esse erro? Eu sei que é de sintaxe^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.