PDA

Ver la Versión Completa : Necesito una ayudita


platense:07
18-04-2007, 05:47:22
Buenas gente!
Tengo una consulta. En un campo TEdit, almaceno un nombre de una persona .. y luego tengo que calcular para cada letra del nombre, su numero, e ir sumandolas a un total. Tengo la siguiente tabla de conversión.
Había pensado en hacer un arreglo e ir poniendole los valores, luego leer la letra, y ver su valor en el arreglo, pero se me complica con la inserción de la Ñ.
Alguien me puede dar alguna idea de cómo realizarlo?

http://img341.imageshack.us/img341/6373/tablaua3.gif

Saludos y Gracias por el tiempo

Héctor Randolph
18-04-2007, 07:29:05
Hola platense:07

Para obtener el número que le corresponde a cada caracter según la tabla podrías crear un función como esta:


function CharToNum(c: Char):Integer;
begin
case UpCase(c) of
'A','J','S': Result:=1;
'B','K','T': Result:=2;
.
.
'E','N','Ñ','W': Result:=5; // Consideras también a la Ñ
.
.

else Result:=0;
end;
end;


Finalmente puedes llamar a la función de esta forma para cada letra de la cadena y hacer la suma


procedure TForm1.Button1Click(Sender: TObject);
var
Numero: Integer;
begin
Numero:=CharToNum(Edit1.Text[1]);//Calculamos el número del primer caracter del edit
ShowMessage(IntToStr(Numero)); //Muestro el número
end;


Saludos

platense:07
18-04-2007, 07:57:26
Héctor, la verdad que te pasaste. Fabuloso lo tuyo.
Yo me estaba haciendo problemas con arreglos y todo eso.
No tengo palabras para agradecerte amigo :D
Saludos

roman
18-04-2007, 08:26:49
Una alternativa:


function GetCharCode(Ch: Char): Integer;
begin
if Ch in ['ñ', 'Ñ'] then Dec(Ch);
Result := ((Ord(UpCase(Ch)) - Ord('A')) mod 9) + 1;
end;