Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problema Función verificar imei (luhn) (https://www.clubdelphi.com/foros/showthread.php?t=92008)

rafaelon 25-06-2017 22:18:37

problema Función verificar imei (luhn)
 
buenas tardes tengo la siguiente consulta tengo esta función

Código:

function IMEIcheck(imei : string): string;
var
  a : Integer;
  sum : Integer;
  i : Integer;
  d : string;
  ds : Integer;
begin
  a := 0;
  sum := 0;
  for i := 0 to Length(imei)-1 do
  begin
    d := Copy(imei, Length(imei)-i, 1);
    ds := StrToInt(d);
    if a mod 2 = 0 then
      ds := ds * 2;
    if ds > 9 then
      ds := ds - 9;
    sum := sum + ds;
    a := a + 1;
  end;
  sum := sum mod 10;
  Result := IntToStr(10 - sum);
end;

y basicamente quiero que tome el valor de imei de un Edit.text y el codigo de verificacion lo muestre en otro edit pero no se que hago mal

Código:

var
s:string;
numero:integer;

begin
numero:= StrToInt(frm_principal.edit10.Text);
s:= IMEIcheck('numero');
edit11.Text:=s;
end;


ecfisa 25-06-2017 23:07:14

Hola rafaelon, bienvenido a los foros de Club Delphi y como a todos los que se inician te invitamos a leer nuestra guía de estilo.

En cuanto a tu consulta, primero hay que aclarar que
Código Delphi [-]
numero
no es igual a
Código Delphi [-]
'numero'

Segundo (y habiendo quitado las comillas) la función IMEIcheck espera un argumento de tipo string y le estarías pasando uno de tipo Integer.


Tercero la función IMEIcheck devuelve un valor de tipo string y no es necesario convertirlo a Integer mediante StrToInt cuando lo asignas a Edit11.Text ya que este espera un valor tipo string.

Dicho esto y sin saber si la función funciona (valga la redundancia), creo que simplemente deberías hacer algo como esto:
Código Delphi [-]
...
begin
  Edit11.Text := IMEIcheck( Edit10.Text ) ;
end;
Por último, ¡ ojo ! en ningún lugar se está haciendo la comprobación del valor que tiene Edit10.Text y que se envía a la función, pero eso es otra cuestión...

Saludos :)

rafaelon 25-06-2017 23:07:47

muchas gracias , me funciono era así de simple


La franja horaria es GMT +2. Ahora son las 21:32:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi