Fórum Transformando Letras em Números usando o componente Edit #352060

18/01/2008

0

O usuário digita o nome na Edit e a Label mostra os números abaixo:
[img:4453f4b36e]http://img85.imageshack.us/img85/807/forumdevmediaediteq9.png[/img:4453f4b36e]

Na figura acima mostra em vermelho que:
N vale 7
A vale 3
V vale 9

É para um programa de numerologia que estou fazendo e algumas letras tem números iguais (obviamente)!

Gostaria que vocês me ajudassem :lol:


Lucas.bernieri

Lucas.bernieri

Responder

Posts

19/01/2008

Heliesio Vaz

Você precisa definir valores para os numeros primeiro, um array ajudaria.


Responder

Gostei + 0

20/01/2008

Dbergkamps10

Olá,
Tente criar um BD com as letras e seus respectivos números. Depois decomponha a string do Edit e compare cada letra para poder retornar o seu número correspondente.

Espero ter ajudado.

Att
Dalton


Responder

Gostei + 0

22/01/2008

Jose Almeida

function LetToNum(Str:String):String;
const
Cad1:String = ´ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz´;
Cad2:String = ´12345678901234567890123456789012345678901234567890123456´;
var
x,y:integer;
begin
Result:=´´;
for y:=1 to Length(Str) do
begin
x:=0;
repeat x:=x+1;
until Str[y]=Cad1[x];
Result:=Result+Cad2[x]
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(LetToNum(Edit1.text));
end;


Responder

Gostei + 0

22/01/2008

Jose Almeida

Ou assim:


function LetToNum(Str:String):String;
const
Cad1:String = ´ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz´;
Cad2:String = ´12345678901234567890123456789012345678901234567890123456´;
var
x,y:integer;
begin
Result:=´´;
for y:=1 to Length(Str) do
begin
x:=Pos(Str[y],Cad1);
Result:=Result+Cad2[x]
end;
end;


Responder

Gostei + 0

13/05/2008

Lucas.bernieri

Beleza,
usei os códigos do Jose de Almeida e funcionou certinho,
mas eu esqueci de pedir o seguinte:
-somar agora os valores;
-deixar os outros caractéres que não sejam letras (por exemplo @#$¬&*!) valendo zero;

Obrigado
Esse fórum já me ajudou bastante... :wink:


Responder

Gostei + 0

14/05/2008

Jose Almeida

Substitua a função por esta:

function LetToNum(Str:String):String;
const
Cad1:String = ´ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz´;
Cad2:String = ´12345678901234567890123456789012345678901234567890123456´;
var
x,y,Soma:integer;
begin
Result:=´´;
Soma := 0;
for y:=1 to Length(Str) do
begin
x:=Pos(Str[y],Cad1);
if x = 0 then
Soma:= Soma + StrToInt(Cad2[10]) else
Soma:= Soma + StrToInt(Cad2[x]);
end;
Result:=IntToStr(Soma);
end;


Responder

Gostei + 0

25/05/2008

Lucas.bernieri

Perdão por encomodar tanto.
Mas como eu faço pra deixar o número somente em unidades,
por exemplo: se a soma der 25, 2+5=7
Desde já agradeço!
São tudo fera...


Responder

Gostei + 0

26/05/2008

Jose Almeida

function Soma(Num:String):String;
var
Sm,x:Integer;
begin
Sm:=0;
for x:=1 to Length(Num) do {Pega os caracteres de Num, um por vez}
begin
Sm:=Sm + StrToInt(Num[x]); {Converte os caracteres em número e soma a Sm}
end;
Soma:= IntToStr(Sm); {Converte Sm em String}
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Soma(Edit1.Text));
end;

end.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar